当前位置: 首页 > 图文教程 > 网络安全 > 安全基础 > 网页脚本攻击防范全攻略(5)

安全基础
正常关机后光电鼠标仍发光怎么解决
金山安全反病毒专家教你认识和安装系统补丁
微软IE团队成员揭秘中国网银不兼容非IE浏览器的原因
防火墙端口扫描和路径追踪设置防黑客入侵
压缩包里的压缩文件加上缩略图的方法
拒绝修改exe文件关联随EXE程序启动的木马
保护硬盘隐私数据防止黑客窃取的操作小方法
开机按F1故障怎么解决(新手学电脑)
实用技巧:自定义软件安装的默认路径
快速打开控制面板中的某一项目
避免网购被骗 揭秘网络钓鱼的9种骗术
删不掉文件的原因和辅助删除的软件工具
隐藏的系统克隆帐户全了解
剖析DDOS攻击的原理 提供解决方法
360安全卫士完美帮你系统打补丁
桌面多出几个IE图标有的不能删除怎么办
加载*dll出错,系统找不到指定的模块
如何揪出并根除Windows系统启动项
菜鸟防止黑客攻击的10个系统设置方法
新手学电脑:宽带拨号的设置方法

安全基础 中的 网页脚本攻击防范全攻略(5)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-28   浏览: 36 ::
收藏到网摘: n/a

  三 我认为这是一种比较冒险的办法,就是再进行一次数据库的查询,如果数据库表内没有相同的值与之相同那么返回错误.

  sql = "SELECT NAME FROM Category where ID="&ID
  set temp=conn.Execute(SQL)
  if temp.bof or temp.eof then
  response.Redirect("index.asp")
  else
  cat_name=temp("name")
  end if
  set temp=nothing

  ‘上面的是数据ID 的检测,下面则是正式的查询

  sql = "SELECT ID T_ID, NAME FROM Category where ID="&ID&" ORDER BY xh asc"
  rs.open sql,conn,1,1

  四,我自己常用的数据过滤脚本,专利,呵~

  id=replace(id,”’”,””)
  If len( request(“id”))>8 then ‘ 为什么取长度上面程序中已经说明
  response.write ""
  response.end
  else

  If request(“id”)<>”” then ‘取不为空则是为了防止一些程序页中会出现空值情况,如果不在这里做判断,程序会校验出错.

  If IsNumeric(request("id"))=False then ' 风清扬修改 ID数据监控程式
  response.write ""
  response.end
  end if
  end if
  end if

  程序体(8)

  由于我个人的编程习惯,我喜欢将所有的数据检验程序全部保留到整站的公用程序中,比如:conn.asp啦,只需要写一次就可以修复全站的问题.

  说到这里,我提一点关于攻击的问题,就是跑用户密码或者是用户名,一般常用的就是

  ….../show.asp?id=1 and 0<>(select count(*) from admin where id=3 and left(username,1)=’a’)

  这样去一个一个尝试,当然我们不能在这里提什么Perl程序去跑密码,程序是别人写,要自己知道原理.这里我只是想给个比较方便的办法就是取ASC码范围.这个要比单独跑要快很多.不论是是字母,数字,汉字,特殊字符,他们总会有对应的ASC码,用以下办法:

  ….../show.asp?id=1 and 0<>(select count(*) from admin where id=3 and asc(right(left(usernamee,3),1)) between 1 and 10000)

  剩下的就随你了,一般的从97到122就可以啦,字母嘛,很快D.呵呵,有人想用mid 函数当然也是不错 asc(mid(username,2,1)) between 1 and 10000 也成.

  如何更加有效的防止SQL注入攻击?我们将在下面的文章中具体提到!

  l 防范远程注入攻击

  这类攻击在以前应该是比较常见的攻击方式,比如POST攻击,攻击者可以随便的改变要提交的数据值已达到攻击目的.又如:COOKIES 的伪造,这一点更值得引起程序编写者或站长的注意,不要使用COOKIES来做为用户验证的方式,否则你和把钥匙留给贼是同一个道理.

  比如:

  If trim(Request. cookies ("uname"))="fqy" and Request.cookies("upwd") =”fqy#e3i5.com” then
  ……..more………
  End if

  我想各位站长或者是喜好写程序的朋友千万别出这类错误,真的是不可饶恕.伪造COOKIES 都多少年了,你还用这样的就不能怪别人跑你的密码.涉及到用户密码或者是用户登陆时,你最好使用session 它才是最安全的.如果要使用COOKIES就在你的COOKIES上多加一个信息,SessionID,它的随机值是64位的,要猜解它,不可能.例:

  if not (rs.BOF or rs.eof) then
  login="true"
  Session("username"&sessionID) = Username
  Session("password"& sessionID) = Password
  ‘Response.cookies(“username”)= Username
  ‘Response.cookies(“Password”)= Password

  下面我们来谈谈如何防范远程注入攻击,一般的攻击都是将单表提交文件拖到本地,将Form ACTION=”chk.asp” 指向你服务器中处理数据的文件即可.如果你全部的数据过滤都在单表页上,那么恭喜你,你将已经被脚本攻击了.

  怎么才能制止这样的远程攻击?好办,请看代码如下: 程序体(9)

  <%
  server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
  server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
  if mid(server_v1,8,len(server_v2))<>server_v2 then
  response.write "<br><br><center>"
  response.write " "
  response.write "你提交的路径有误,禁止从站点外部提交数据请不要乱该参数!"
  response.write "

"
  response.end
  end if
  %>

  ‘个人感觉上面的代码过滤不是很好,有一些外部提交竟然还能堂堂正正的进来,于是再写一个.

  ‘这个是过滤效果很好,建议使用.

  if instr(r