« 双十一策略浅析11月8日谷歌较大幅度更新PR值 »

时间:2012-11-8 17:9:21

网站防SQL注入最常用的三种方法

作者:fraiy 分类: 网站建设 浏览: 评论人数0人 【我来说两句】

关于防SQL注入的方法,有三种方法是比较流行且很适用的:
1、编写代码防SQL注入
2、通过设备IIS防SQL注入
3、通过设置网站管理权限防范

关于方法一的原理不想多说,get和post请求过滤的代码给出如下:

<!--实现 get 请求过滤的代码如下:-->
<%
dim sql_injdata
sql_injdata = "'| ;| # | ([\ s\ b+ ()]+([email=select%7Cupdate%7Cinsert%7

Cdelete%7Cdeclare%7C@%7Cexec%7Cdbcc%7Calter%7Cdrop%7Ccreate%

7Cbackup%7Cif%7Celse%7Cend%7Cand%7Cor%7Cadd% 7Cset% 7Copen%

7Cclose%7Cuse% 7Cbegin%7Cretun%7Cas%7Cgo%7Cexists)[/ s/ b]select|

update| insert| delete| declare| @| exec|dbcc| alter| drop| create| backup| if| else|

end| and| or|add| set| open| close| use| begin| retun| as| go| exists)[\ s\ b[/ email]+]*)"
sql_inj = split(sql_injdata,"| ") 


<!--实现 post 请求过滤的代码如下:-->
if request.querystring<>"" then
for each sql_get in request.querystring
for sql_data=0 to ubound(sql_inj)
if instr(request.querystring(sql_get),sql_inj(sql_data))>0 then response.write "<script language=vbscript>
alert(' 请不要在参数中包含非法字符尝试注入!');history.back(- 1)</ script>"
response.end
end if
next

next
end if
if request.form<>"" then
for each sql_post in request.form
for sql_data=0 to ubound(sql_inj)
if instr(request.form(sql_post),sql_inj(sql_data))>0 then response.write "<script language=vbscript>alert(' 请不要在参数中包含非法字符尝试注入!');history.back(- 1)</ script>"
response.end
end if
next
next
end if
%>
 

对于通过设置IIS出错后的显示信息,达到防SQL注入的目的,详细说明一下方法:

方法 1:打开你的 IIS管理器(以IIS6.0为例),选择你的网站= 属性页面 = 主目录选项卡 = 点击配置按钮 = 调试选项卡= 向客户端发送下列文本错误消息
这样,即使入侵者找到了注入点,注入后,得到也只是服务器返回的固定的错误消息 不能得到任何有价值的错误信息
方法 2:在你的 ASP语句中(一般是在最开头的地方),加上一句
On Error Resume Next
(注意,此句必加)

 

这就是容错语句,当 ASP语句执行时发生错误,就跳过错误,继续向下执行,而且不会返回错误信息,使攻击者无法得到有用信息。

 

另外就是通过设置网站的管理权限防范 ,注入攻击SQL注入的最终防范方法是将管理站点和浏览站点分开将网站一分为二,将发布到互联网的网站设置成 只读 ,用于网络内部维护的网站设置成 完全控制 ,这样,就可以防止网站被安全入侵。 

具体思路是,如果网站是基于 SQL Server 数据库的,在SQL Server 中创建两个用户,一个用户对网站数据库只具有浏览权限,另一个用户对网站数据库具有完全控制权限对于同一个网站来说,创建两个一样的备份,其中一个网站使用浏览权限的用户,该网站发布到 Internet,对外提供服务;另一个网站,使用完全控制权限的SQL Server用户,该网站只对“内”服务。

对于网站建设中的安全问题而言,防SQL注入是最基本的要求,所以在这个地方务必要吃透吃通。

原创文章请注明转载自双N优化,本文地址:http://www.nnsem.com/post/100.html

已有0位网友发表了看法,你呢?

关于网站  网站建设  IIS  网站安全  的相关文章:

http://www.nnsem.com/cmd.asp?act=tb&id=100&key=2c3baf95

已有0位网友发表了一针见血的评论,你还等什么?
【按Ctrl+Enter也能发送消息啦】 ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。