开发者社区> 问答> 正文

[@倚贤][¥20]Java中使用prepareStatement预编译为什么就可以防止sql注入了,具体原理是什么样的?

Java中使用prepareStatement预编译为什么就可以防止sql注入了,具体原理是什么样的?

展开
收起
月下丶 2018-12-14 22:16:54 2921 0
4 条回答
写回答
取消 提交回答
  • 一线互联网开发者

    预编译,生成了sql语法树,这里外面传入的参数只会作为参数,不能作为sql指令的一部分来执行。

    2019-07-17 23:21:40
    赞同 展开评论 打赏
  • 我是这么理解的,prepareStatement预编译时已经生成了sql的语法树,执行时只能传入变量的值。

    2019-07-17 23:21:40
    赞同 展开评论 打赏
  • 预编译就是首先生成sql语句,再用变量填空,所以对于恶意的字符串还是按变量处理,不会改变语句

    2019-07-17 23:21:40
    赞同 展开评论 打赏
  • 可以参考 http://www.importnew.com/5006.html 这个文章,比较详细的讲解了预编译为什么可以防止sql注入

    2019-07-17 23:21:40
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载