PHP 防XSS跨站攻击
//防止跨站攻击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,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,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跨站攻击相关推荐
- 利用Kangle的HTTP-only,Cookie防XSS跨站攻击
在kangle中我们可以通过访问控制,对cookie增加这一属性,而不用修改程序,非常方便. 进入kangle(2.9.6以上版本)的管理后台(http://localhost:3311/),点左边的 ...
- php mysql可以跨站_Laravel5中防止XSS跨站攻击的方法
本文实例讲述了Laravel5中防止XSS跨站攻击的方法.分享给大家供大家参考,具体如下: Laravel 5本身没有这个能力来防止xss跨站攻击了,但是这它可以使用Purifier 扩展包集成 HT ...
- xss跨站攻击【网络攻防CTF】(保姆级图文)
目录 什么是xss跨站攻击 实验内容 实验步骤 如何避免xss跨站攻击 总结 欢迎关注 『网络攻防CTF』 系列,持续更新中 欢迎关注 『网络攻防CTF』 系列,持续更新中 什么是xss跨站攻击 跨站 ...
- web安全性测试——XSS跨站攻击
一.什么是xss跨站攻击 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS. ...
- 如何进行渗透测试XSS跨站攻击检测
国庆假期结束,这一节准备XSS跨站攻击渗透测试中的利用点,上一节讲了SQL注入攻击的详细流程,很多朋友想要咨询具体在跨站攻击上是如何实现和利用的,那么我们Sinesafe渗透测试工程师为大家详细的讲讲 ...
- XSS跨站攻击解决办法--AntiSamy的配置及使用
XSS跨站攻击 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击 ...
- Cross-Site Scripting XSS 跨站攻击全攻略
原文:http://a1pass.blog.163.com/blog/static/2971373220087295449497/ 题记:这是我在<黑客X档案>08年第5期发表的一篇文章, ...
- xss跨站攻击html转义,前端攻击和防御(一)XSS跨站脚本攻击
(一)XSS跨站脚本攻击 (1)XSS简介 XSS攻击全称跨站脚本攻击(Cross Site Scripting),是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混 ...
- WordPress4.8.1版本存在XSS跨站攻击漏洞
2017年10月19日,阿里云安全威胁情报系统监测到WordPress 官方发布了一条安全通告表示在4.8.1版本中发现了一个存储型的XSS漏洞,通过该漏洞,攻击者可以在受影响网站的评论区写下包含恶意 ...
最新文章
- deepin 15.11镜像下载地址
- HDU1599 find the mincost route Floyd算法求最小环
- Ubuntu启动Apache
- firebase auth_如何使用auth和实时数据库构建Firebase Angular应用
- jinja2模板用法详解
- 关于Oracle表及字段的注释 转
- Restlet入门例子 - RESTful web framwork for java
- php核心语法,PHP核心语法总结
- 云熙板式家具参数化拆单软件免锁版_数控开料机拆单软件如何选择?
- Java 核心内容相关面试题【2】
- xlc mysql_mysql – 用于存储产品信息的noSQL?
- Software--IoC 依赖倒置 控制反转
- 【专家专栏】浅谈百度搜索排序
- java foreach 赋值_java foreach 使用
- 在线硬盘存储计算机,【模拟攒机-模拟装机】在线攒电脑-ZOL中关村在线
- wamp php 如何安装,WAMP的详细安装过程分享
- PLM( 产品生命周期管理)的简单介绍
- 天牛须搜索算法优化神经网络_matlab代码
- 苹果官方首曝iOS 15!这些经典iPhone都要被弃
- 石油远程《机械设计》第一次在线作业
热门文章
- python封装类在当前文件中使用_name_下调用不了_python提示这个是什么原因!
- c语言1到20找最大和最小相邻,一组数据里面怎样查找相邻和相同的整数算法设计解决方案...
- 华为手机楷体字体下载_手机查看3D打印模型图纸,国产软件SView来了
- 如何用 Nacos 构建服务网格生态
- 开放下载 | 和 4000+Java 开发者共读《Spring Cloud Alibaba 从入门到实战》
- 开发函数计算的正确姿势——OCR 服务
- linux 用户与用户发邮件,Linux自动向指定用户发送邮件
- 如何复制粘贴_年终工作总结如何写?复制粘贴肯定不行啦
- pythonos pathjson_Python Json数据文件操作原理解析
- matplotlib散点图点大小_一步步学Matplotlib炫酷可视化(上)