[转]PHP GET接收URL的函数的那点事

Date:  2013/5/3   Sort:  网页技术 9367 Views / 0 Comments 

之前我站被黑了,去emlog论坛问了问,经热心的emer指点发现是没有对接受的函数进行过滤。

后来自己研究了一下,发现GET接受的内容一定要用这个代码,否则后果。。。。。很严重

 

01 /**
02  * 转换为安全的纯文本
03  *
04  * @param string  $text
05  * @param boolean $parse_br    是否转换换行符
06  * @param int     $quote_style ENT_NOQUOTES:(默认)不过滤单引号和双引号 ENT_QUOTES:过滤单引号和双引号 ENT_COMPAT:过滤双引号,而不过滤单引号
07  * @return string|null string:被转换的字符串 null:参数错误
08  */
09 function h2t($text, $parse_br = true, $quote_style = ENT_QUOTES)
10 {
11     if (is_numeric($text))
12         $text = (string)$text;
13   
14     if (!is_string($text))
15         return null;
16   
17     if (!$parse_br) {
18         $text = str_replace(array("\r","\n","\t"), ' ', $text);
19     } else {
20         $text = nl2br($text);
21     }
22   
23     //$text = stripslashes($text);
24     $text = htmlspecialchars($text, $quote_style, 'UTF-8');
25   
26     return $text;
27 }


然后在需要进行过滤的地方加上然后使用这个函数就可以了。

比如,我在我的【框架显示网页】上对接受的内容进行了过滤,改成了如下内容:

 
1 $urlob=h2t($_GET["url"]);
2 $b64=h2t($_GET['b64']);
3 $jup=h2t($_GET['jup']);

这样,就不用担心黑客利用【跨站脚本攻击漏洞】被攻击了。

 

(本文转载自:无名智者的个人博客http://zhizhe8.net)

更多