更新时间:2021年04月12日 14时48分09秒 来源:黑马程序员
SQL 注入是什么意思?
所谓SQL注人就是把SQL命令人为地输人URL、表格域或者其他动态生成的SQL询语句的输入参数中,最终达到欺骗服务器执行恶意的SQL命令。
假设某个网站通过网页获取用户输人的数据,并将其插人数据库。正常情况下的URL地址如下。
http://localhost/id=222
此时,用户输人的id数据222会被插人数据库执行下列SQL语句:
select * from users where id =222
但是,如果我们不对用户输人数据进行过滤处理,那么可能发生SQL注人。例如,用户可能输入下列URL。
http:/ /localhost/id=''or 1=1
此时用户输人的数据插人到数据库后执行的SQL语句如下:
select * from users where id =222
通过比较两个SQL语句,发现这两条SQL查询语句意义完全不同,正常情况下,SQL语句可以查询出指定id的用户信息,但是SQL注人后查询的结果是所有用户信息。
SQL注人是风险非常高的安全漏洞,我们可以在应用程序中对用户输人的数据进行合法性检测,包括用户输入数据的类型和长度,同时,对SQL语句中的特殊字符(如单引号、双引号、分号等)进行过滤处理。
值得一提的是,由于SQL注入攻击的Web应用程序处于应用层,因此大多防火墙不会讲行拦截。
除了完善应用代码外,还可以在数据库服务器端进行防御,对数据库服务器进行权限设置,降低Web程序连接数据库的权限,撤销不必要的公共许可,使用强大的加密技术保护敏感数据,并对被读取走的敏感数据进行审查跟踪等。
猜你喜欢: