安全防护,如何做到安全防护?想要防护就要知道对方是如何进行攻击。有很多文章都在写如何攻下某站点,其实其攻击的途径也不过是以下几种:
1. 简单的脚本攻击
此类攻击应该属于无聊捣乱吧。比如javascript :alert(); </table>等等,由于程序上过滤的不严密,使攻击者既得不到什么可用的,但又使的他可以进行捣乱的目的。以目前很多站点的免费服务,或者是自身站点的程序上也是有过滤不严密的问题。
2. 危险的脚本攻击
这类脚本攻击已经过度到可以窃取管理员或者是其他用户信息的程度上了。比如大家都知道的cookies窃取,利用脚本对客户端进行本地的写操作等等。
3. Sql Injection 漏洞攻击
可以说,这个攻击方式是从动网论坛和BBSXP开始的。利用SQL特殊字符过滤的不严密,而对数据库进行跨表查询的攻击。比如:
http://127.0.0.1/forum/showuser.asp?id=999 and 1=1
http://127.0.0.1/forum/showuser.asp?id=999 and 1=2
http://127.0.0.1/forum/showuser.asp?id=999 and 0<>(select count(*) from admin)
<%
function CHK(fqyString)
fqyString = replace(fqyString, `>`, `>`)
fqyString = replace(fqyString, `<`, `<`)
fqyString = replace(fqyString, `&#`, `&`)
fqyString = Replace(fqyString, CHR(32), ` `)
fqyString = Replace(fqyString, CHR(9), ` `)
fqyString = Replace(fqyString, CHR(34), ```)
fqyString = Replace(fqyString, CHR(39), ``)
fqyString = Replace(fqyString, CHR(13), ``)
fqyString = Replace(fqyString, CHR(10) & CHR(10), `</P><P> `)
fqyString = Replace(fqyString, CHR(10), `<BR> `)
CHK = fqyString
end function
%>
`以下是应用实例
<%=CHK(Username)%>
Username=CHK(replace(request(“username”),”`”,””))
使用Include把函数写在公有页面上,这样效率是最好的。
程序体(1)
另外,值得我们注意的是,很多站点在用户注册,或者是用户资料修改的页面上也缺少脚本的过滤,或者是只在其中之一进行过滤,注册进入后修改资料仍然可以进行脚本攻击。对用户提交的数据进行检测和过滤,程序体(2) 如下:
`以下是过滤函数
If Instr(request(`username`),`=`)>0 or
Instr(request(`username`),`%`)>0 or
Instr(request(`username`),chr(32))>0 or
Instr(request(`username`),`?`)>0 or
Instr(request(`username`),`&`)>0 or
Instr(request(`username`),`;`)>0 or
Instr(request(`username`),`,`)>0 or
Instr(request(`username`),``)>0 or
Instr(request(`username`),`?`)>0 or
Instr(request(`username`),chr(34))>0 or
Instr(request(`username`),chr(9))>0 or
Instr(request(`username`),`?`)>0 or
Instr(request(`username`),`$`)>0 or
Instr(request(`username`),`>`)>0 or
Instr(request(`username`),`<`)>0 or
Instr(request(`username`),````)>0 then
response.write `朋友,你的提交用户名含有非法字符,请更改,谢谢合作 <a href=javascript :window.history.go(-1);>返回</a>`
response.end
end if
程序体(2)
为了提供工作效率我们再将过滤内容程序化,这样对多个参数的过滤效率将有很大程度上的提高:如 程序体(3)
`以下为程序主体
dim Bword(18)
Bword(0)=`?`
Bword(1)=`;`
Bword(2)=`>`
Bword(3)=`<`
Bword(4)=`-`
Bword(5)=```
Bword(6)=`””`
Bword(7)=`&`
Bword(8)=`%`
Bword(9)=`$`
Bword(10)=``
Bword(11)=`:`
Bword(12)=`|`
Bword(13)=`(`
Bword(14)=`)`
Bword(15)=`--`
Bword(16)=` chr(9)`
Bword(17)=` chr(34)`
Bword(18)=` chr(32)`
errc=false
`以下是应用实例部分
for i= 0 to ubound(Bword)
if instr(FQYs,Bword(i))<>0 then
errc=true
end if
next
if errc then
response.write `<script language=``javascript``>`
response.write `parent.alert(很抱歉!您的操作违法了);`
response.write `history,back();`
response.write `</script>`
response.end
end if
[1]
文章来源于领测软件测试网 https://www.ltesting.net/