文章40
标签5
分类5

xss原理和防护

为什么要发表这篇文章呢?原因看下图

很无奈,表示xss之前也是听过,只是没有真的去研究过,所以这次为了审核只能研究一番了。

XSS-即Cross Site Scripting. 为了与"CSS"不混淆,故简称XSS.

但是别人已经写过的文章,我并不想完全复制下来

如果未来他网站比我先倒闭,我就写吧,现在只需点击进入

 

看了上面这么多,总结起来就是那几个特殊标签以及字符的关系,所以只需要屏蔽这些字符即可。


function gjj($str)

{

$farr = array(                       //定义过滤规则的数组

"/\\s+/",

"/<(\\/?)(script|i?frame|style|html|body|title|link|meta|object|\\?|\\%)([^>]*?)>/isU",

"/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/isU",

);

$str = preg_replace($farr,"",$str);           //用正则方式对字符串进行过滤

return addslashes($str);     //返回字符串时对引号进行转义

}

function hg_input_bb($array)

{

if (is_array($array))

{

foreach($array AS $k => $v)          //遍历提交上来的全局变量数组

{

$array[$k] = hg_input_bb($v);

}

}

else

{

$array = gjj($array);

}

return $array;

}

$_REQUEST = hg_input_bb($_REQUEST);    //过略request方式的请求

$_GET = hg_input_bb($_GET);                    //过滤get方式的请求

$_POST = hg_input_bb($_POST);             //过滤post方式的请求

 
可以过滤某些特殊字符和常见的html标签,防范基础的xss共攻击和sql注入。
(上面方法名可以自己换哦~)

只要这样,xss byebye

php@符号的用法简介,错误关闭符号

用在函数前,使不显示错误信息,前面的“@”就能把错误显示给抑制住,也就是不会显示错误,然后再抛出异常,显示自己定义的异常处理,添加这个只是为了让浏览者不看到,不友好的页面,并不能抑制住错误,只能抑制显示错误.


function foo($n) 
{ 
    $result = 1/$n; 
    return $result; 
} 
echo @foo(0); // 函数中会产生除 0 错误,但加上 @ 后并不显示该错误。 
echo "end"; // 输出 end 

function db_connect()//连接数据库  
{  
@$db =mysql_connect('localhost','root','test');  
if(!$db)  
throw new Exception('连接数据库失败!请重试!');  
mysql_select_db('book');  
return $db;  
}