日期:2014-05-17  浏览次数:20827 次

请问下面的正则过滤XML.send的内容时什么位置导至发送的内容为空?
Microsoft.XMLHTTP

http.send("<?xml version='1.0' encoding='utf-8'?><request>" + document.getElementById("keyword").value + "</request>");

请问下面的正则过滤XML.send的内容时什么位置导至发送的内容为空?

if request Form<>"" then call stophacker(request Form,"\b(and|or)\b {1,6}?(=|>|<|\bin\b|\blike\b)|/\* +?\*/|< *script\b|\bEXEC\b|UNION +?SELECT|UPDATE +?SET|INSERT +INTO +?VALUES|(SELECT|DELETE) +?FROM|(CREATE|ALTER|DROP|TRUNCATE) +(TABLE|DATABASE)")
function stophacker(values,re)
 dim l_get, l_get2,n_get,regex,IP
 
  for each l_get in values
  l_get2 = values(l_get)
  set regex = new regexp
  regex.ignorecase = true
  regex.global = true
  regex.pattern = re
  if regex.test(l_get2) then
  Response.Write "到底是哪错了呢?"
  Response.end
  end if
  set regex = nothing
  next
end function

------解决方案--------------------
这个正则,主要是过滤掉可疑信息,比如:
<script 可能企图执行JS脚本,进行跨站攻击啥的
EXEC 可能企图在数据库中执行操作系统指令
INSERT 可能企图在数据库中插入数据
TRUNCATE 可能企图将数据库表清空掉

------解决方案--------------------
不太容易看出来,表达式比较复杂,建议分段来进行测试,以逐步缩小范围。