在进行java web 测试时,经常会忽略的测试种类就是sql注入测试,这类缺陷造成的原因是开发技术在这方面欠缺的表现,虽然不常见,但一旦有这类缺陷,就很因此对运营的数据造成很多不必要的损失,所以,还是值得关注部分,那什么是sql注入?
SQL 注入是一种专门针对SQL语句的攻击方式。通过把SQL命令插入到web表单提交或输入域名或者页面请求的查询字符串中,利用现有的程序,讲这些恶意的SQL注入到后台的数据库中。
SQL注入分2种,一种是平台层注入,一种是代码层注入。前者是因为数据库平台的漏洞或者不安全的数据库配置造成的,后者是因为程序员对输入未进行细致的过滤,从而让非法的,含敏感字符的字符串进入后台,与后台SQL拼接成了恶意的sql导致。
举例:常见的登录页面的场景中,处理不当可能就会存在该类错误。在登录的时候,输入用户名和密码。这时使用HQL产生类似以下语言:“from User user where user name=’”+name+”’ and user password=’”+password+”’ ” ”,这HQL从逻辑上是没什么问题的,但是如果在登入时,用户在用户名或者密码输入框中输入:zhaoxin ‘ or ‘x’=’x”,这使得简单的HQL语句进行组装拼接后,变成了“from User user where user name=’zhaoxin’ or ‘x’=’x’ and user password=’admin’ ”;这样这条语句就用于是真的,永远都可以登入成功。