随笔-348  评论-598  文章-0  trackbacks-0
我目前在学ASP(注意:不是ASP.NET)和JAVA。ASP只有一年不到的经验,所以如果文中有什么不妥之处请见谅,并请留言告知,谢谢了^-^.
1.在递交表单的时候可以用checkStr来check一下,这样可以过滤SQL非法字符。
函数定义:
Rem 过滤SQL非法字符
function checkStr(str)
 
if isnull(str) then
  checkStr 
= ""
  exit function 
 
end if
 checkStr
=replace(str,"'","''")
end function

使用方法:
check=checkStr(request.form("check"))

2.过滤关键字。一般打开一个信息页面的时候都会出现类似于shownews.asp?id=2的地址,如果shownews.asp存在漏洞,很容易就会被注入,但是如果用HTMLEncode在shownews.asp页面中过滤一下关键字id,你就会发现扫描软件根本找不到注入点.
函数定义:
Rem 过滤HTML代码
function HTMLEncode(fString)
if not isnull(fString) then
    fString 
= replace(fString, ">"">")
    fString 
= replace(fString, "<""&lt;")

    fString 
= Replace(fString, CHR(32), "&nbsp;")
    fString 
= Replace(fString, CHR(9), "&nbsp;")
    fString 
= Replace(fString, CHR(34), "&quot;")
    fString 
= Replace(fString, CHR(39), "&#39;")
    fString 
= Replace(fString, CHR(13), "<BR>")
    fString 
= Replace(fString, CHR(10& CHR(10), "</P><P> ")
    fString 
= Replace(fString, CHR(10), "<BR> ")

    HTMLEncode = fString
else
   HTMLEncode
=fstring
end if
end function
使用方法:
id=HTMLEncode(id)

3.如果你有服务器管理权,最好把错误返回页面之相同一个页面,这样可以躲避很多软件的扫描。
4.如果你还是害怕数据库信息会被泄露,你可以构造难以想到的表名比如:dbajhkhkjsdfl等等,扫面软件扫面的表名是固定的,而人就更想不到了.

以上就是我这一年来对ASP防注的经验,一般来说如果你的功夫不深写代码都会出现注入漏洞,我想以上方法会对你有很大的帮助,如果你有什么好的方法,大家可以起交流^-^,QQ17477260  msn:tigertian17@hotmail.com


---------------------------------------------------------
专注移动开发

Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
posted on 2005-07-06 12:03 TiGERTiAN 阅读(972) 评论(1)  编辑  收藏 所属分类: VB/ASP

评论:
# re: ASP防注的最佳的方法(我认为的) 2007-03-31 00:03 | brooks陈
好像只要过滤掉单引号就比较安全了. 当然, 单引号不存在可能造成SQL语句的错误, 那就把错误页面指向一个可以弹出"小样,你想做什么"的对话框的页面.  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: