360通用防护 过滤用户输入的数据 实现防注

2012-09-24 11:18 稿源:yangjunwei.com  0条评论

描述:

1、跨站脚本攻击就是指恶意攻击者向网页中插入一段恶意代码,当用户浏览该网页时,嵌入到网页中的恶意代码就会被执行。

2、跨站脚本攻击漏洞,英文名称Cross Site Scripting,简称CSS又叫XSS。它指的是恶意攻击者向Web页面中插入一段恶意代码,当用户浏览该页面时,嵌入到Web页面中的恶意代码就会被执行,从而达到恶意攻击者的特殊目的。

危害:

1、恶意用户可以使用该漏洞来盗取用户账户信息、模拟其他用户身份登录,更甚至可以修改网页呈现给其他用户的内容。

2、恶意用户可以使用JavaScript、VBScript、ActiveX、HTML语言甚至Flash应用的漏洞来进行攻击,从而来达到获取其他的用户信息目的。

解决方案: 过滤用户输入的数据

切记一条规则:用户的所有输入都要认为是不安全的。

这里分享一下 360.cn 提供的解决方案:

PHP版防注代码

代码使用方法:

1、将如下代码保存为360_safe3.php 文件并上传到要包含的文件的目录

2、在页面中引入上述 360_safe3.php文件:require_once('360_safe3.php');

require_once(‘360_safe3.php’);

如果想整站防注,就在网站的一个公用文件中,如数据库链接文件 config.inc.php 中引入!

代码来源:http://yangjunwei.com/a/943.html

PHP版代码

// yangjunwei.com

function customError($errno, $errstr, $errfile, $errline)

{

echo “Error number: [$errno],error on line $errline in $errfile
”;

die();

}

set_error_handler(“customError”,E_ERROR);

$getfilter=“‘|(and|or)\\b.+?(>|<|=|in|like)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)”;

$postfilter=“\\b(and|or)\\b.{1,6}?(=|>|<|\\bin\\b|\\blike\\b)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)”;

$cookiefilter=“\\b(and|or)\\b.{1,6}?(=|>|<|\\bin\\b|\\blike\\b)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)”;

function StopAttack($StrFiltKey,$StrFiltValue,$ArrFiltReq){

if(is_array($StrFiltValue))

{

$StrFiltValue=implode($StrFiltValue);

}

if (preg_match(“/”.$ArrFiltReq.“/is”,$StrFiltValue)==1){

//slog(“

操作IP: ”.$_SERVER[“REMOTE_ADDR”].“
操作时间: ”.strftime(“%Y-%m-%d %H:%M:%S”).“
操作页面:”.$_SERVER[“PHP_SELF”].“
提交方式: ”.$_SERVER[“REQUEST_METHOD”].“
提交参数: ”.$StrFiltKey.“
提交数据: ”.$StrFiltValue);

print “360websec notice:Illegal operation!”;

exit();

}

}

//$ArrPGC=array_merge($_GET,$_POST,$_COOKIE);

foreach($_GET as $key=>$value){

StopAttack($key,$value,$getfilter);

}

foreach($_POST as $key=>$value){

StopAttack($key,$value,$postfilter);

}

foreach($_COOKIE as $key=>$value){

StopAttack($key,$value,$cookiefilter);

}

if (file_exists(’update360.php‘)) {

echo “请重命名文件update360.php,防止黑客利用
”;

die();

}

function slog($logs)

{

$toppath=$_SERVER[“DOCUMENT_ROOT”]。“/log.htm”;

$Ts=fopen($toppath,“a+”);

fputs($Ts,$logs.“\r\n”);

fclose($Ts);

}

?>

ASP版

使用方法:

1、将如下代码保存为360_safe3.asp 文件并上传到要包含的文件的目录

2、在页面中引入上述 360_safe3.asp 文件:

<!--#include virtual=“/360_safe3.asp”-->

如果想整站防注,就在网站的一个公用文件中,如数据库链接文件 conn.asp 中引入!

ASP代码:

<%

‘ yangjunwei.com

On Error Resume Next

if request.querystring<>“” then call stophacker(request.querystring,“’|(and|or)\b.+?(>|<|=|in|like)|/\*.+?\*/|<\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)”)

if request.Form<>“” then call stophacker(request.Form,“\b(and|or)\b.{1,6}?(=|>|<|\bin\b|\blike\b)|/\*.+?\*/|<\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)”)

if request.Cookies<>“” then call stophacker(request.Cookies,“\b(and|or)\b.{1,6}?(=|>|<|\bin\b|\blike\b)|/\*.+?\*/|<\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)”)

ms()

function stophacker(values,re)

dim l_get, l_get2,n_get,regex,IP

for each n_get in values

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

IP=Request.ServerVariables(“HTTP_X_FORWARDED_FOR”)

If IP = “” Then

IP=Request.ServerVariables(“REMOTE_ADDR”)

end if

‘slog(“

操作IP: ”&ip&“
操作时间: ” & now() & “
操作页面:”&Request.ServerVariables(“URL”)&“
提交方式: ”&Request.ServerVariables(“Request_Method”)&“
提交参数: ”&l_get&“
提交数据: ”&l_get2)

Response.Write “360websec notice:Illegal operation!”

Response.end

end if

set regex = nothing

next

next

end function

sub slog(logs)

dim toppath,fs,Ts

toppath = Server.Mappath(“/log.htm”)

Set fs = CreateObject(“scripting.filesystemobject”)

If Not Fs.FILEEXISTS(toppath) Then

Set Ts = fs.createtextfile(toppath, True)

Ts.close

end if

Set Ts= Fs.OpenTextFile(toppath,8)

Ts.writeline (logs)

Ts.Close

Set Ts=nothing

Set fs=nothing

end sub

sub ms()

dim path,fs

path = Server.Mappath(“update360.asp”)

Set fs = CreateObject(“scripting.filesystemobject”)

If Fs.FILEEXISTS(path) Then

Response.Write “请重命名升级文件update360.asp防止黑客利用”

Response.End

end if

Set fs=nothing

end sub

%>

有好的文章希望站长之家帮助分享推广,猛戳这里我要投稿

相关文章

相关热点

查看更多