关于SQL漏洞--不用statement的原因

来源:互联网 发布:淘宝新开店铺采集 编辑:程序博客网 时间:2024/06/05 12:01

statement主要用于执行静态的SQL语句。preparestatement用于执行动态sql语句,效率很高,并且还能防止SQL注入。

关于SQL漏洞。

例如:sql = "select * from 用户表 where 姓名=' "+name+" ' and 密码= ' "+password+" ' ";

name和password放用户输入的用户名和口令。通过执行上述sql句子判断帐号密码是否合法。但是这种方法存在一种致命的漏洞。

如果在用户名称中输入字符串: 123  'or' 1=1,然后密码随便输什么,如aaa。变量替换之后。sql语句就变成了:

sql = "select * from 用户表 where 姓名 = '111' or '1=1' and 密码='aaa';

当select语句在查询判断条件的时候,遇到or操作就会忽略下面的and操作,而1=1 永远都是true,这意味着无论密码输入什么,都能通过验证。

0 0
原创粉丝点击