一般的说,在java环境中,使用java.sql.Statement可能导致sql注入,而使用java.sql.PreparedStatement可以避免这个问题。
今天做了个实验,发现Statement也是没那么容易注入的,在jdbc url里面必须配置[color=red]allowMultiQueries=true[/color],例如jdbc:mysql:///demo?autoReconnect=true&useUnicode=true&characterEncoding=utf8&allowMultiQueries=true。否则select id,name from tb_demo where name like '%name'; delete from tb_demo;%' 这样的语句是无法执行的。
今天做了个实验,发现Statement也是没那么容易注入的,在jdbc url里面必须配置[color=red]allowMultiQueries=true[/color],例如jdbc:mysql:///demo?autoReconnect=true&useUnicode=true&characterEncoding=utf8&allowMultiQueries=true。否则select id,name from tb_demo where name like '%name'; delete from tb_demo;%' 这样的语句是无法执行的。
本文探讨了Java环境中使用Statement和PreparedStatement的区别。通过实验发现,在特定配置下Statement也可能导致SQL注入风险,而PreparedStatement则能有效避免此类问题。
349

被折叠的 条评论
为什么被折叠?



