如何防范SQL注入攻击

SQL注入攻击是你需要担心的事情,不管你使用什么网络编程技术,和所有的web框架需要担心这个问题。你需要遵循一些基本规则:

一、在部署应用程序之前,您应该总是做安全检查(安全审查)。建立一个正式的安全过程(正式的安全过程),当每次你更新,评审的所有代码。尤为重要。很多次我听说开发团队在官方网上(生活)将非常详细的安全审查之前,几周或几个月后他们做一些小更新,他们会跳过安全审查这亲密的说,“我们所做的是一个小更新,代码评审后”。请始终坚持安全检查。

二、锁定您的数据库安全,访问数据库的web应用程序所需的最小权限的功能。如果你不需要访问特定表的web应用程序,所以要确保它没有权限访问这些表。如果web应用程序需要从您的帐户应付款表只有只读权限生成报告,所以一定要禁止在此表上插入/更新/删除权限。

三、构造动态SQL语句时,一定要使用安全类(类型-安全)的参数机制超重。大部分数据的API,包括ADO和ADO。净,有这样的支持,允许您指定的参数提供的具体类型(例如,一个字符串,整数、日期、等等),可以确保这些参数被适当转义/编码,以防止黑客利用它们。一定要从头到尾使用这些特性。

例如,在ADO。净对于动态SQL,你可以像下面改写上面的语句,更安全的做法:

昏暗的SSN字符串=请求。查询字符串(SSN)

昏暗的CMD新SqlCommand(选择“au_lname,不同作者au_id = @ au_id”)

模糊参数=新SqlParameter(“au_id”,SqlDbType。VarChar)

参数。值= SSN

cmd。参数。Add(参数)

这将防止任何试图潜入另一个SQL表达式(因为ADO。净知道au_id超重的字符串值),和其他数据,以避免问题(如不正确转换值类型,等等)。注意,VS 2005内置TableAdapter /数据集设计师自动使用此机制,ASP。NET 2.0数据源控件。

一个普遍的误解,误解是,如果你使用一个存储过程或ORM,你不能完全通过SQL注入攻击的危害。这是不正确的,你还需要确保你是谨慎的数据传输到存储过程时,或者当使用ORM定制查询,你是安全的。

四、确保你编写一个自动化的单元测试,特殊检查你的数据访问层和应用程序SQL注入攻击。这样做是非常重要的,帮助捕获(抓住)“是一个小更新,所有没有安全问题”过失的情况下,提供额外的安全层,以避免意外坏安全缺陷引入到您的应用程序。

五、许多初学者下载通用SQL注入预防程序在系统中,需要防止注入的页面的头部手动注入测试(防止别人。

但如果通过SQL注入分析仪可以很容易跳过的喷射系统和自动分析注入点。然后只需几分钟,您的管理员帐户和密码将被分析。

六、不要把敏感数据在数据库中存储为纯文本。是我的个人意见,密码应该在一个方向上(一个)后再散列存储,我甚至不喜欢将它们存储在加密。在默认设置下,ASP。NET 2.0会员API自动为你这么做,也同时,达到安全盐(盐随机化行为)随机行为。如果你决定建立自己的会员数据库,我建议你看看我们这里的发表自己的会员提供源代码。也确定你的信用卡和其他私人数据库中的数据是加密的。因此,即使你的数据库入侵(妥协),至少你不会使用客户的私人数据。

七、对于SQL注入分析仪软件笔者发现一种简单而有效的方法来防止,笔者和大家分享下心得。首先,我们需要了解SQL注入分析仪是如何工作的。在操作的过程中,发现该软件不是“admin”管理员帐户,但对于权限,如标志= 1)。这样,不论你的管理员帐户改变不能被检测出来。

既然无法逃避检测,我们不能做两个帐户,一个是普通的管理员帐户,一个是为了防止考虑,你为什么这么说?我认为,如果找一个权威的最大账户错觉,吸引软件测试,而这个帐户的内容超过超过几千字的汉字,将迫使软件分析该帐户满载状态资源耗尽,甚至崩溃。让我们来修改数据库。

1、把真正的管理员密码ID2后(如任何一个位置。ID549)。

由于SQL注入攻击是应用程序开发过程中编程不紧,所以对于绝大多数的防火墙,这攻击是“法律”。只取决于完美的编程问题的解决方案。专门为SQL注入攻击的工具少,Wpoison asp,PHP开发有一定的帮助。

2、修改表结构。字段的数据类型管理员帐户,修改文本类型最大字段255(有足够的,如果你还想做再大点,可以选择报告类型),密码字段,也同样的设置。

3、修改表。设置管理员权限的帐户ID1和输入大量的汉字(最好是超过100个单词)。


标签:  |  | 


顶部