app教程网 学习教程 sql注入防护措施(sql注入的7种防范方法)

sql注入防护措施(sql注入的7种防范方法)

未能保存SQLQueryStructure(又名SQL注入)”在2月16日CWE/SANS2公布的前25个最危险的编程错误中排名第二。原因是SQL注入攻击对企业用户构成了巨大的潜在威胁。

这是因为一旦SQL注入攻击成功,就会导致黑客入侵你的网络,访问和破坏数据,控制电脑。

什么是SQL注入?

SQL注入攻击的原理很简单。当应用软件输出用户数据时,它为恶意用户的入侵创造了机会,导致输入显示为SQL序列而不是数据。

例如,想象这一行代码:

SELECT * from其中username=' $ username '和password=' $ password

这行代码的目的是显示用户框中用户名和密码的记录。使用网络界面,当提示输入用户名和密码时,恶意用户可能会键入:

1' or 1'=' 1

1' or 1'=' 1

然后生成一系列这些:

选择*其中用户名='1 '或1 '=' 1 '密码=' 1 '或' 1 '=' 1 '

就这样,黑客成功地将整个OR条件注入到验证过程中。更糟糕的是,条件' 1'='1 '总是正确的,所以这个SQL序列通常会导致黑客规避验证过程。

使用如“;”将在现有序列的末尾生成另一行。作为现有序列注释的一部分,黑客可能会删除整个表或更改包含的数据。黑客甚至可以控制基本的操作系统环境,从而控制整台电脑。

把电脑变成肉鸡攻击网络中的其他电脑。总结起来,SLQ注入攻击的结果包括:机密数据泄露,数据完整性丧失,数据丢失,危及全网。

如何抵御SQL注入的进攻?

最重要的措施是数据清理和验证。

数据清洗通常涉及到任何提交的数据通过一个函数(比如mysql的mysql_real_escape_string()函数)运行,以确保任何有风险的字符(比如"")都不会传递到数据的sql序列中。

验证略有不同。数据验证是为了确保提交的数据以期望的格式出现。在最基本的层面上,这包括确保电子邮件地址包含“@”徽标,并且提交的数据不能超过指定的最大长度。

验证通常以两种形式出现:通过风险黑名单或冗余字符和通过只能在指定情况下使用的字符白名单,这将更多地涉及程序员的工作。虽然身份验证通常发生在用户方,但黑客可能会修改或绕过身份验证。

因此,验证服务器上的数据也很重要。

但是数据清理和验证远远不够。以下是帮助用户阻止或减轻SQL注入攻击的十种方法:

1.不要相信任何人:假设所有提交的用户数据都有问题,对所有数据进行验证和清洗。

2.不要使用可能被规避的动态SQL:只要有可能,就使用准备好的报告、参数化查询或存储过程。

本文来自网络,不代表本站立场,转载请注明出处:https: