侧边栏壁纸
博主头像
帮主の后花园博主等级

欢迎光临,开开心心每一天

  • 累计撰写 21 篇文章
  • 累计创建 5 个标签
  • 累计收到 3 条评论

目 录CONTENT

文章目录

PreparedStatement是如何防止sql注入的?

Gxbalun
2022-03-12 / 0 评论 / 2 点赞 / 445 阅读 / 585 字

PreparedStatement对象防止sql的方式是把用户非法输入的单引号用\反斜杠做了转义。例如:

select * from user where account = '小明' and password = '6' or '1' = '1'
转义后
select * from user where account = '小明' and password = '6\' or \'1\' = \'1'

select * from user where account = '小明' and password = ''; drop table user;#'
转义后
select * from user where account = '小明' and password = '\'; drop table user;#'

在实现PreparedStatement接口的实现类中的setString(int parameterIndex, String x)函数中做了一些处理,把单引号做了转义(只要用户输入的字符串中有单引号,那mysql数据库产商的setString()这个函数,就会把单引号做转义)

2

评论区