php过滤XSS攻击的函数

本文分享一例防范XSS攻击的.php函数代码,学习下在php中防范XSS攻击的方法,有需要的朋友参考学习下。就跟随百分网小编一起去了解下吧,想了解更多相关信息请持续关注我们应届毕业生考试网!

过滤XSS攻击

以下函数:

过滤用户的输入,保证输入是XSS安全的。

例子:

复制代码 代码示例:

/**

* 过滤XSS攻击

* edit: www.jbxue.com

*/

function RemoveXSS($val) {

// remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are allowed

// this prevents some character re-spacing such as

// note that you have to handle splits with \n, \r, and \t later since they *are* allowed in some inputs

$val = preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/', '', $val);

// straight replacements, the user should never need these since they're normal characters

// this prevents like @avascript:alert('XSS')

$search = 'abcdefghijklmnopqrstuvwxyz';

$search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

$search .= '1234567890!@#$%^&*()';

$search .= '~`";:?+/={}[]-_|\'\\';

for ($i = 0; $i < strlen($search); $i++) {

// ;? matches the ;, which is optional

// 0{0,7} matches any padded zeros, which are optional and go up to 8 chars

// @ @ search for the hex values

$val = preg_replace('/([xX]0{0,8}'.dechex(ord($search[$i])).';?)/i', $search[$i], $val); // with a ;

// @ @ 0{0,7} matches '0' zero to seven times

$val = preg_replace('/(?{0,8}'.ord($search[$i]).';?)/', $search[$i], $val); // with a ;

}

// now the only remaining whitespace attacks are \t, \n, and \r

$ra1 = Array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'style', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base');

$ra2 = Array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavailable', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterchange', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowenter', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload');

$ra = array_merge($ra1, $ra2);

$found = true; // keep replacing as long as the previous round replaced something

while ($found == true) {

$val_before = $val;

for ($i = 0; $i < sizeof($ra); $i++) {

$pattern = '/';

for ($j = 0; $j < strlen($ra[$i]); $j++) {

if ($j > 0) {

$pattern .= '(';

$pattern .= '([xX]0{0,8}([9ab]);)';

$pattern .= '|';

$pattern .= '|(?{0,8}([9|10|13]);)';

$pattern .= ')*';

}

$pattern .= $ra[$i][$j];

}

$pattern .= '/i';

$replacement = substr($ra[$i], 0, 2).''.substr($ra[$i], 2); // add in <> to nerf the tag

$val = preg_replace($pattern, $replacement, $val); // filter out the hex tags

if ($val_before == $val) {

// no replacements were made, so exit the loop

$found = false;

}

}

}

return $val;

}

?>

【php过滤XSS攻击的函数】相关文章:

php过滤iframe,php过滤XSS攻击的函数相关推荐

  1. php富文本防注入_HTML Purifier,PHP中过滤富文本防止XSS攻击

    首先引用别人的原话: HTML Purifier:PHP防止xss跨站攻击利器 xss是什么? (百度到的→)XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给 ...

  2. xss过滤器无法处理ajax请求_thunkPHP 预防XSS攻击

    比如在有人恶意在你的输入框中或文本域中输入<script>标签,如果不做处理的话,输入框中的<script>会保存到我们数据库中,等到将这个数据拿出来展示的时候,就等于将这个内 ...

  3. 有效预防xss_预防XSS攻击的一些方法整理

    XSS又称CSS,全称Cross SiteScript(跨站脚本攻击), XSS攻击类似于SQL注入攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性.其原 ...

  4. thinkphp6 防范xss攻击

    转化的思想防范xss攻击 转化的思想:将输入内容中的<>转化为html实体字符. 原生php中对xss攻击进行防范,使用htmlspecialchars函数,将用户输入的字符串中的特殊字符 ...

  5. XSS攻击绕过过滤方法大全(转)

    XSS攻击绕过过滤方法大全(约100种) 文章目录 XSS攻击绕过过滤方法大全(约100种) 1.XSS定位器 2.XSS定位器(短) 3.无过滤绕过 4.利用多语言进行过滤绕过 5.通过JavaSc ...

  6. java 过滤攻击报文_Spring Boot XSS 攻击过滤插件使用

    XSS 是什么 XSS(Cross Site Scripting)攻击全称跨站脚本攻击,为了不与 CSS(Cascading Style Sheets)名词混淆,故将跨站脚本攻击简称为 XSS,XSS ...

  7. xss攻击解决方案php项目,php 过滤存储型XSS攻击,_PHP_ 少侠科技

    详细内容 最近做的项目被测试测出了存在存储型XSS,至此记录一下,问题出在了 input 框 :payload:"a" οnclick=alert(1)> 也做了一些XSS过 ...

  8. 过滤关键字防止XSS攻击

    public static string ClearXSS(stringstr){string returnValue =str;if (string.IsNullOrEmpty(returnValu ...

  9. 安全测试之xss攻击和mysql注入

    xss概念: xss(Cross Site Script)跨站脚本攻击,为不和层叠样式表(css)混淆,写为xss 存在位置:web应用系统最常见软件安全漏洞 后果:代码植入到系统页面,篡改数据.盗取 ...

  10. 安全测试之XSS攻击

    XSS (跨站脚本攻击)是什么?它的全名是:Cross-site scripting,为了和CSS层叠样式表区分所以取名XSS.是一种网站应用程序的安全漏洞攻击,是代码注入的一种.它允许恶意用户将代码 ...

最新文章

  1. AJAX解决中文乱码问题
  2. Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据
  3. php分页样式,thinkphp分页样式修改
  4. GDCM:重写ELSCINT1 / PMSCT_RGB1压缩图像的测试程序
  5. python多线程不能利用多核cpu,但有时候多线程确实比单线程快。
  6. java hashmap扩容大小_HashMap的扩容机制以及默认大小为何是2次幂
  7. 面试中Handler这些必备知识点你都知道吗?面试真题解析
  8. ajax当页post请求,tag落地页--通过ajax-post请求数据
  9. 安装数据库windows 安装redmine 详解
  10. IntelliJ IDEA 如何从SVN导入项目 怎么部署 就是路劲和tomcat配置等等 步骤希望
  11. kafka session.timeout.ms 是指消费一条数据的时间?_干货 | Kafka 内核知识梳理,附思维导图...
  12. MongoDb 聚合报错
  13. Mac 下开启系统自带webserver
  14. IDEA自定义注释模板
  15. python 修改pdf_使用Python编辑PDF
  16. 内网基础-隧道技术、内网穿透(SSH隧道、Socket隧道、跨路由扫描)
  17. JavaScriptTypeScript学习总结
  18. 回归分析结果表格怎么填_excel回归分析结果解读
  19. Arduino Uno + PAJ7620U2 实现手势识别控制LED灯工作
  20. 噪音消除小技巧--噪音匹配

热门文章

  1. Excel 取消身份证的科学计数法显示形式
  2. 最完整UI库Kendo UI发布R3 2018|附下载
  3. 使用 jQuery 避免鼠标双击
  4. OpenCV教程(42) xml/yaml文件的读写
  5. 让VMware功能增強的三款辅助工具
  6. 2013年系统集成资质考试时间
  7. Autodesk MapGuide Enterprise 2012开发技术入门培训视频录像下载
  8. Enterprise Library2.0(1):Data Access Application Block学习
  9. html 层次选择器,jquery层次选择器
  10. yoga710怎么进入bios_重装系统看不懂bios?超详细中英文翻译,教你1分钟识别bios各项...