SQL注入
通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
SQL 注入实例:
登录请求
情境 | 登录名 | 密码 |
---|---|---|
正常 | zhangsan | 123456 |
SQL 注入 | zhangsan';-- | 123 |
正常查询语句为:
select * from user where userName = 'zhangsan' and passwoad = '123456'
注入后:
select * from user where userName = 'zhangsan';-- ' and passwoad = '123456'
因为后面添加的单引号和分号断开了查询的后续条件,并通过 "-- " 进行了注释,使原sql 语句语义发生了改变。
解决办法
通过 connect 下的 preparedStatement 方法来预编译 sql,后续加入参数;因为 sql 语句进行了预编译,保障了参数传入后,整条语句的语义不会发生变化,从而防范了 SQL 注入的问题。
网友评论