开发者社区 问答 正文

preparedstatement为什么比statement安全

preparedstatement对sql语句进行预编译,所以安全,而statement可能会有恶意sql语句的情况,就是检查登录username userpassword后跟 or 1=1这样的恶意sql语句,请问这个预编译为什么安全

展开
收起
蛮大人123 2016-03-19 15:52:35 2505 分享 版权
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    预编译不是拼接字符串,所以没有sql注入的风险。拼接sql的问题是,你的参数和sql语句体本身分不出来。如果username
    abc' or '1' = '1
    拼接上你外面的sql,就构成了一个含义不同的sql语句。
    preparedstatement直接把参数代入编译,而不是让数据库去解析sql中的参数,就没有这个问题。

    2019-07-17 19:08:19
    赞同 展开评论
问答分类:
问答地址: