懂你所需,做你所想
当前位置:首页 > 新闻资讯 > 网站建设 > ASP程序执行SQL语句时防止注入攻击的问题

ASP程序执行SQL语句时防止注入攻击的问题

发表日期:2010-2-9 10:35:09文章编辑:合肥搜联广告设计浏览次数:

    以下是一个简单的用户更改密码的代码 
--------------------- 
username=request("user_name") 
pwd=request("pwd") 
username=replace(username,"’","’’") 
pwd=replace(pwd,"’","’’") 
sql="update tbl_test set pwd=’" & pwd & "’ where uid=’" & username & "’" 
set rs=conn.execute (sql) 

-------------- 
现在,假如我注册一个用户,用户名为 aa’; exec sp_addlogin ’haha 

当该用户更改密码时(假设改为pp),会出现什么后果呢?? 

sql变为 update tbl_test set pwd=’pp’ where uid=’aa’ ; exec sp_addlogin ’haha’ 

结果是用户密码没有被修改,因为没有 aa这个用户, 
但在你的数据库中创建了一个登陆,新登陆名为 haha 

将用户名稍加修改,实际上可以运行任何sql语句,任何sql系统过程 
而这一切都在你不知情的情况下发生的,实际上,上面的只是一个 

示范,稍微修改一下用户名,我们可以做添加一个DBA账号,删除所 

有纪录,读取用户密码等越权操作。  

   

解决的办法: 

在你使用参数前,对参数进行严格检验,尤其是用户输入的参数 

不但要对其数据类型,长度进行检查,还要对其内容进行检查。 


我们再看一段代码。(用户登陆) 

username=request("user_name") 
pwd=request("pwd") 
username=replace(username,"’","’’") 
pwd=replace(pwd,"’","’’") 

sql="select uid,pwd from account where  uid=’" & username & "’  and pwd=’" & pwd "’" 
rs.open sql,conn,1,1 
if not rs.eof then 
response.write  rs(0) & "欢迎您,您已登陆成功" 
else 
response.write  "登陆失败,错误的用户名或密码" 
end if 
............ 
以上程序的漏洞是显而易见的  
我们可以以          用户名:   admin       密码:   a’ or ’1’=’1 
轻易以admin的账号登陆系统 
因为我们的sql 变为了 
select uid,pwd from account where  uid=’admin’ and pwd=’a’ or ’1’=’1’ 
显然 uid=’admin’ and pwd=’a’ or ’1’=’1’是恒为成立的所以  rs.eof 为false 

正确的写法应为 
sql="select uid,pwd from account where  uid=’" & username & "’  and pwd=’" & pwd "’" 
rs.open sql,conn,1,1 
if rs(0)=username and rs(1)=pwd then 
response.write  rs(0) & "欢迎您,您已登陆成功" 
else 
response.write  "登陆失败,错误的用户名或密码" 
end if  
 
相关新闻

使用asp代码突破163相册的

  ...

日期:2010-2-8 10:17:49 浏览次数:45

两种比较典型的ASP木马防范方

随着ASP 技术的发展,网络上基于ASP技术开发的网站越来越...

日期:2010-2-8 10:18:52 浏览次数:34

解决Jmail发送邮件标题出现

今天在做JMAIL发邮件的时候,接收到的邮件标题全是乱码,经在BAID...

日期:2010-2-8 10:19:37 浏览次数:47

ASP无组件上传图片代码

现在做网站我想不上传图片是不可能的了。但上传图片一也是最危险的一漏洞。...

日期:2010-2-9 9:39:05 浏览次数:41

ASP 中select cas

select case 是当一个值有多种判断情况时...

日期:2010-2-9 9:40:07 浏览次数:58

ASP链接SQL代码

<% ’on error resume&nb...

日期:2010-2-9 9:40:59 浏览次数:42