PHP 防XSS跨站攻击

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

$search = ‘abcdefghijklmnopqrstuvwxyz‘;    $search .= ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ‘;    $search .= ‘[email protected]#$%^&*()‘;    $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;}
时间: 2024-12-10 18:22:27

PHP 防XSS跨站攻击的相关文章

360 webscan中防注入跨站攻击的核心

//get拦截规则 $getfilter = "\\<.+javascript:window\\[.{1}\\\\x|<.*=(&#\\d+?;?)+?>|<.*(data|src)=data:text\\/html.*>|\\b(alert\\(|confirm\\(|expression\\(|prompt\\(|benchmark\s*?\\(\d+?|sleep\s*?\\([\d\.]+?\\)|load_file\s*?\\()|<[a-z

漫话web渗透 : xss跨站攻击day1

1.1什么是XSS跨站攻击 xss攻击并不是对服务器进行攻击,而是借助网站进行传播,攻击者精心构造的一个URL,欺骗受害者打开从而使恶意脚本在受害者计算机中悄悄运行1.2XSS实例 首先我们看一个简单的xss实例 <html> <head>this is a xss test</head> <body> <script>alert("xss")</script> </body> </html>

用shell脚本批量进行xss跨站攻击请求

由于执行的xss攻击请求他多了,初步估计要执行83次,而且还要执行3篇,如果手工一个一个去执行,说出去,我还配叫自动化大师吗: 有鉴于此,边打算自己编写一个脚本进行批量执行: 而短脚本的编写,非shell莫属,想到做到: 首先附上xss跨站攻击的请求报文: POST /web/show.asp?id=1327 HTTP/1.1 Host: 192.168.26.xxx Connection: close Accept: image/gif, image/jpeg, image/pjpeg, im

XSS(跨站攻击)

XSS:跨站攻击防御的方法(PHP) 1.转义/编码 htmlspecialchars() 2.过滤 strip_tags() 3.CSP(Content Security Policy) 4.第三方库 (1)HTMLPurifier (2)htmLawed (3)Zend_Filter_Input

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

1.跨站攻击含义 XSS:(Cross-site scripting)全称“跨站脚本”,是注入攻击的一种.其特点是不对服务器端造成任何伤害,而是通过一些正常的站内交互途径,例如发布评论,提交含有 JavaScript 的内容文本.这时服务器端如果没有过滤或转义掉这些脚本,作为内容发布到了页面上,其他用户访问这个页面的时候就会运行这些脚本. 一个永远关不掉的窗口while (true) { alert("你关不掉我~"); } CSRF:跨站请求伪造(Cross-site request

xss跨站攻击测试代码

'><script>alert(document.cookie)</script> ='><script>alert(document.cookie)</script> <script>alert(document.cookie)</script> <script>alert(vulnerable)</script> %3Cscript%3Ealert('XSS')%3C/script%3E <

DDOS、CC、sql注入,跨站攻击防御方法

web安全常见攻击解读--DDos.cc.sql注入.xss.CSRF 一,DDos https://www.cnblogs.com/sochishun/p/7081739.html#4111858 http://nic.swu.edu.cn/s/nic/thyt/20180604/2555404.html 1.1 DDos介绍 DDoS是英文Distributed Denial of Service的缩写,意即“分布式拒绝服务”.分布式拒绝服务攻击发起后,攻击网络包就会从很多DOS攻击源(俗称

WAF——针对Web应用发起的攻击,包括但不限于以下攻击类型:SQL注入、XSS跨站、Webshell上传、命令注入、非法HTTP协议请求、非授权文件访问等

核心概念 WAF Web应用防火墙(Web Application Firewall),简称WAF. Web攻击 针对Web应用发起的攻击,包括但不限于以下攻击类型:SQL注入.XSS跨站.Webshell上传.命令注入.非法HTTP协议请求.非授权文件访问等.

总结 XSS 与 CSRF 两种跨站攻击

在那个年代,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式.在这个年代, 参数化查询 [1] 已经成了普遍用法,我们已经离 SQL 注入很远了.但是,历史同样悠久的 XSS 和 CSRF 却没有远离我们.由于之前已经对 XSS 很熟悉了,所以我对用户输入的数据一直非常小心.如果输入的时候没有经过 Tidy 之类的过滤,我一定会在模板输出时候全部转义.所以个人感觉,要避免 XSS 也是很容易的,重点是要“小心”.但最近又听说了另一种跨站攻击 CS