奇宝库 > sql注入漏洞防护手段(网络安全sql注入)

sql注入漏洞防护手段(网络安全sql注入)

未能保存SQLQueryStructure(又称SQL注入)”在2月16日CWE/SANS2公布的25大最危险编程错误排行榜中位列第二。原因是:SQL注入攻击对企业用户构成了巨大的潜在威胁。这是因为一旦SQL注入攻击成功,就会导致黑客入侵你的网络,访问和破坏数据,控制电脑。

什么是SQL注入?

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

例如,想象这一行代码:

SELECT * from userswhereusername=' $ username ' and password=' $ password

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

1 '或1 '=' 1

1 '或1 '=' 1

然后生成以下序列:

SELECT *其中Username='1 '或' 1 '=' 1 ' password=' 1 '或' 1 '=' 1 '

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

使用如“;字符" "将在现有序列的末尾产生另一行序列。作为现有序列注释的一部分,黑客可能会删除整个表或更改其中包含的数据。黑客甚至可以控制基本的操作系统环境,从而控制整台电脑,把电脑变成肉鸡攻击网络中的其他电脑。一般来说,SLQ注入攻击的结果包括:机密数据泄露、数据完整性丧失、数据丢失、危及整个网络。

如何抵御SQL注入的进攻?

最重要的措施是数据清理和验证。数据清洗通常涉及到任何一个通过函数(比如mysql的mysql _ real _ escape _ string()函数)提交数据的SQL序列,以保证任何有风险的字符(比如“‘”)都不会传递给数据。

验证略有不同。数据验证是为了确保提交的数据以期望的格式出现。在最基本的层面上,这包括确保电子邮件地址包含“@”徽标,并且提交的数据长度不能超过指定的最大长度。验证往往以两种形式出现:通过风险黑名单或冗余字符和通过只能在指定情况下使用的字符白名单,这将更多地涉及程序员的工作。虽然身份验证通常发生在用户一方,但黑客可能会修改或绕过身份验证,因此验证服务器上的数据也很重要。

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

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

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

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