首页技术文章正文

SQL 注入是什么意思?

更新时间:2021年04月12日 14时48分09秒 来源:黑马程序员

SQL 注入是什么意思?

所谓SQL注人就是把SQL命令人为地输人URL、表格域或者其他动态生成的SQL询语句的输入参数中,最终达到欺骗服务器执行恶意的SQL命令。

1618210051221_SQL.png


假设某个网站通过网页获取用户输人的数据,并将其插人数据库。正常情况下的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程序连接数据库的权限,撤销不必要的公共许可,使用强大的加密技术保护敏感数据,并对被读取走的敏感数据进行审查跟踪等。

1577370495235_学IT就到黑马程序员.gif



猜你喜欢:

6款实用的开发安全测试工具

性能测试包括哪些类型?性能测试种类介绍

性能测试工具有哪些?常用性能测试工具介绍

自动化测试是什么?什么情况下适合用?

黑马程序员软件测试工程师培训课程

分享到:
在线咨询 我要报名
和我们在线交谈!