//防止跨站攻击static public function removeXss($val){    $val = preg_replace('/([\x00-\x08][\x0b-\x0c][\x0e-\x20])/', '', $val);

    $search = 'abcdefghijklmnopqrstuvwxyz';    $search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';    $search .= '1234567890!@#$%^&*()';    $search .= '~`";:?+/={}[]-_|\'\\';

    for ($i = 0; $i < strlen($search); $i++) {        $val = preg_replace('/(&#[x|X]0{0,8}' . dechex(ord($search[$i])) . ';?)/i', $search[$i], $val);        $val = preg_replace('/(&#0{0,8}' . ord($search[$i]) . ';?)/', $search[$i], $val);    }

    $ra1 = array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'blink', 'link', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound');    $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;    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 .= '(&#[x|X]0{0,8}([9][a][b]);?)?';                    $pattern .= '|(&#0{0,8}([9][10][13]);?)?';                    $pattern .= ')?';                }                $pattern .= $ra[$i][$j];            }            $pattern .= '/i';            $replacement = substr($ra[$i], 0, 2) . '<x>' . substr($ra[$i], 2);            $val = preg_replace($pattern, $replacement, $val);            if ($val_before == $val) {                $found = false;            }        }    }    return $val;}

转载于:https://www.cnblogs.com/chen1970s/p/7493783.html

PHP 防XSS跨站攻击相关推荐

  1. 利用Kangle的HTTP-only,Cookie防XSS跨站攻击

    在kangle中我们可以通过访问控制,对cookie增加这一属性,而不用修改程序,非常方便. 进入kangle(2.9.6以上版本)的管理后台(http://localhost:3311/),点左边的 ...

  2. php mysql可以跨站_Laravel5中防止XSS跨站攻击的方法

    本文实例讲述了Laravel5中防止XSS跨站攻击的方法.分享给大家供大家参考,具体如下: Laravel 5本身没有这个能力来防止xss跨站攻击了,但是这它可以使用Purifier 扩展包集成 HT ...

  3. xss跨站攻击【网络攻防CTF】(保姆级图文)

    目录 什么是xss跨站攻击 实验内容 实验步骤 如何避免xss跨站攻击 总结 欢迎关注 『网络攻防CTF』 系列,持续更新中 欢迎关注 『网络攻防CTF』 系列,持续更新中 什么是xss跨站攻击 跨站 ...

  4. web安全性测试——XSS跨站攻击

    一.什么是xss跨站攻击 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS. ...

  5. 如何进行渗透测试XSS跨站攻击检测

    国庆假期结束,这一节准备XSS跨站攻击渗透测试中的利用点,上一节讲了SQL注入攻击的详细流程,很多朋友想要咨询具体在跨站攻击上是如何实现和利用的,那么我们Sinesafe渗透测试工程师为大家详细的讲讲 ...

  6. XSS跨站攻击解决办法--AntiSamy的配置及使用

    XSS跨站攻击 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击 ...

  7. Cross-Site Scripting XSS 跨站攻击全攻略

    原文:http://a1pass.blog.163.com/blog/static/2971373220087295449497/ 题记:这是我在<黑客X档案>08年第5期发表的一篇文章, ...

  8. xss跨站攻击html转义,前端攻击和防御(一)XSS跨站脚本攻击

    (一)XSS跨站脚本攻击 (1)XSS简介 XSS攻击全称跨站脚本攻击(Cross Site Scripting),是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混 ...

  9. WordPress4.8.1版本存在XSS跨站攻击漏洞

    2017年10月19日,阿里云安全威胁情报系统监测到WordPress 官方发布了一条安全通告表示在4.8.1版本中发现了一个存储型的XSS漏洞,通过该漏洞,攻击者可以在受影响网站的评论区写下包含恶意 ...

最新文章

  1. deepin 15.11镜像下载地址
  2. HDU1599 find the mincost route Floyd算法求最小环
  3. Ubuntu启动Apache
  4. firebase auth_如何使用auth和实时数据库构建Firebase Angular应用
  5. jinja2模板用法详解
  6. 关于Oracle表及字段的注释 转
  7. Restlet入门例子 - RESTful web framwork for java
  8. php核心语法,PHP核心语法总结
  9. 云熙板式家具参数化拆单软件免锁版_数控开料机拆单软件如何选择?
  10. Java 核心内容相关面试题【2】
  11. xlc mysql_mysql – 用于存储产品信息的noSQL?
  12. Software--IoC 依赖倒置 控制反转
  13. 【专家专栏】浅谈百度搜索排序
  14. java foreach 赋值_java foreach 使用
  15. 在线硬盘存储计算机,【模拟攒机-模拟装机】在线攒电脑-ZOL中关村在线
  16. wamp php 如何安装,WAMP的详细安装过程分享
  17. PLM( 产品生命周期管理)的简单介绍
  18. 天牛须搜索算法优化神经网络_matlab代码
  19. 苹果官方首曝iOS 15!这些经典iPhone都要被弃
  20. 石油远程《机械设计》第一次在线作业

热门文章

  1. python封装类在当前文件中使用_name_下调用不了_python提示这个是什么原因!
  2. c语言1到20找最大和最小相邻,一组数据里面怎样查找相邻和相同的整数算法设计解决方案...
  3. 华为手机楷体字体下载_手机查看3D打印模型图纸,国产软件SView来了
  4. 如何用 Nacos 构建服务网格生态
  5. 开放下载 | 和 4000+Java 开发者共读《Spring Cloud Alibaba 从入门到实战》
  6. 开发函数计算的正确姿势——OCR 服务
  7. linux 用户与用户发邮件,Linux自动向指定用户发送邮件
  8. 如何复制粘贴_年终工作总结如何写?复制粘贴肯定不行啦
  9. pythonos pathjson_Python Json数据文件操作原理解析
  10. matplotlib散点图点大小_一步步学Matplotlib炫酷可视化(上)