php xss filter
来源:互联网 发布:澳洲研究型硕士 知乎 编辑:程序博客网 时间:2024/06/06 17:46
function transform_HTML($string, $length =null){
// Helps prevent XSS attacks
// Remove dead space.
$string = trim($string);
// Prevent potential Unicode codec problems.
$string = utf8_decode($string);
// HTMLize HTML-specific characters.
$string = htmlentities($string, ENT_NOQUOTES);
$string = str_replace("#","#", $string);
$string = str_replace("%","%", $string);
$length = intval($length);
if($length >0){
$string = substr($string,0, $length);
}
return $string;
}
这个函数将 HTML 特定的字符转换为 HTML 字面字符。一个浏览器对任何通过这个脚本的 HTML 以非标记的文本呈现。例如,考虑下面的 HTML 字符串:
<STRONG>Bold Text</STRONG>
一般情况下,HTML 会显示为:Bold Text
但是,通过 transform_HTML() 后,它就像原始输入一样呈现。原因是处理的字符串中的标签字符串转换为 HTML 实体。transform_HTML() 的结果字符串的纯文本看起来像下面这样:
<STRONG>Bold Text</STRONG>
该函数的实质是 htmlentities() 函数调用,它会将 <、>、和 & 转换为 <、>、和 &。尽管这会处理大部分的普通攻击,但有经验的 XSS 攻击者有另一种把戏:用十六进制或 UTF-8 编码恶意脚本,而不是采用普通的 ASCII 文本,从而希望能绕过你的过滤器。他们可以在 URL 的 GET 变量中发送代码,告诉浏览器,“这是十六进制代码,你能帮我运行吗?” 一个十六进制例子看起来像这样:
<ahref="http://host/a.php?variable=%22%3e %3c%53%43%52%49%50%54%3e%44%6f%73%6f%6d%65%74%68%69%6e%67%6d%61%6c%69%63%69%6f%75%73%3c%2f%53%43%52%49%50%54%3e">
浏览器渲染这个信息的时候,结果就是:
<ahref="http://host/a.php?variable="><SCRIPT>Dosomethingmalicious</SCRIPT>
为了防止这种情况,transform_HTML() 采用额外的步骤把 # 和 % 符号转换为它们的实体,从而避免十六进制攻击,并转换 UTF-8 编码的数据。
最后,为了防止某些人用很长的输入超载字符串从而导致某些东西崩溃,你可以添加一个可选的 $length 参数来截取你指定最大长度的字符串。
终极解决方案:HTML_Safe
http://pear.php.net/package/HTML_Safe/download
0 0
- php xss filter
- xss filter
- xss filter
- xss-html-filter
- XSS Filter实现
- 防止XSS攻击Filter
- Filter 防Xss攻击
- spring mvc xss filter
- java xss漏洞Filter
- 使用filter防止XSS
- xss filter绕过技巧
- XSS Filter Evasion Cheat Sheet
- XSS Filter Evasion Cheat Sheet
- XSS Filter Evasion Cheat Sheet
- 使用filter过滤xss攻击
- 使用filter过滤xss攻击
- 使用filter过滤xss攻击
- 使用filter过滤xss攻击
- Hdu5429,数学+高精度+等比序列判断
- Action Recognition with Trajectory-Pooled Deep-Convolutional Descriptors
- mysql导入与导出sql文件指令
- 用nodejs解析json数据
- 你想学好rails+vim+ruby+titanium等等成为全栈工程师牛人么?这里是牛人博客网站地址
- php xss filter
- 解决sessions should be nested with care, unset $TMUX to force错误
- Bestcoder#54 A problem of sorting
- php数组与字符串的转换
- 一个游戏数值策划的自白:我所理解的数值工作
- iOS包管理工具Cocoapods的安装与使用
- 1068. Find More Coins (30)
- tomcat记录控制台输出信息至文件
- 栈的压入、弹出序列