PHP剔除删除掉危险字符

本文出至:新太潮流网络博客

/**
 * [剔除掉危险字符]
 * @E-mial [email protected]
 * @TIME   2017-04-07
 * @WEB    http://blog.iinu.com.cn
 * @param  [数据] $val [要处理的数据]
 * @return [type]      [description]
 */
function remove_xss($val) {

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

    $search = ‘abcdefghijklmnopqrstuvwxyz‘;
    $search .= ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ‘;
    $search .= ‘[email protected]#$%^&*()‘;
    $search .= ‘~`";:?+/={}[]-_|\‘\\‘;
    for ($i = 0; $i < strlen($search); $i++) {

        $val = preg_replace(‘/(&#[xX]0{0,8}‘ . dechex(ord($search[$i])) . ‘;?)/i‘, $search[$i], $val);

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

    // 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;
    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);
            $val = preg_replace($pattern, $replacement, $val);if($val_before == $val){

                $found =false;}}}return $val;}

本文出至:新太潮流网络博客

时间: 2024-08-02 12:33:11

PHP剔除删除掉危险字符的相关文章

sed在指定行上删除和添加字符

欢迎转载!转载时请注明出处:http://blog.csdn.net/nfer_zhuang/article/details/44020599 引言 我在一个项目中需要发布版本,两个客户的需求基本相同,只有是在一个fm34(消回音)模块上一个有该功能,另外一个没有.那么就存在在发版本的时候根据需要打开和关闭关于fm34相关的代码. 其中的一个就是是否需要inmod一个ko文件,我的处理是: 在脚本中有inmod该ko的一行代码,但是默认是被注释掉的 在给需要该功能的客户发布版本时,通过sed将改

linux删除不可见字符

col -b < file > newfile 例: man bash > file 此时,如果你用cat来查看file文件,显示结果是正常的,但如果你用vi来查看时,你会发现里面有很多奇怪的字符,那都是些不可见字符,要怎么消灭这些字符呢?没错,你只需运行最上面那行命令即可. linux删除不可见字符,布布扣,bubuko.com

spring -mvc 将对象封装json返回时删除掉对象中的属性注解方式

spring -mvc 将对象封装json返回时删除掉对象中的属性注解方式 在类名,接口头上注解使用在 @JsonIgnoreProperties(value={"comid"}) //希望动态过滤掉的属性 例 @JsonIgnoreProperties(value={"comid"}) public interface 接口名称{ } @JsonIgnoreProperties(value={"comid"}) public class 类名{

Qt删除掉原来的资源图片后出现的问题

    这几天在用Qt做一个超市收银系统的项目,当做练一练手,反正闲的也没事干,做的差不多时,打算把之前的资源图片换掉, 什么都改了,代码里面的路径都改了,还是编译不过去,总是提示这样一个错误. <span style="font-size:24px;">:-1: 错误:No rule to make target `images/update.png', needed by `debug/qrc_images.cpp'. Stop.</span>     真是

oracle 删除掉重复数据只保留一条

用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 2.删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有

在SpringMVC中使用过滤器(Filter)过滤容易引发XSS的危险字符

一 简介 如题所示,如果不在服务端对用户的输入信息进行过滤,然后该参数又直接在前台页面中展示,毫无疑问将会容易引发XSS攻击(跨站脚本攻击),比如说这样: form表单中有这么一个字段: <input type="text" id="author" name="author" placeholder="昵称" /> 然后潜在攻击者在该字段上填入以下内容: <script>alert('XSS')<

36.在字符串中删除特定的字符

http://zhedahht.blog.163.com/blog/static/25411174200801931426484/ 题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符.例如,输入"They are students."和"aeiou",则删除之后的第一个字符串变成"Thy r stdnts.". 分析:这是一道微软面试题.在微软的常见面试题中,与字符串相关的题目占了很大的一部分,因为写程序操作字符串能很好的反映我们的

原生JavaScript判断是否为邮箱、危险字符、验证长度、验证网址、验证小数、整数、浮点数等常用的验证

(71~80)验证篇这一篇文章主要是10个比较常用表单验证功能,包括了邮箱.危险字符.验证长度.验证网址.验证小数.整数.浮点数等常用的验证,有了这些代码片段,平时的表单验证也可以不需要jquery的验证插件了,希望可以帮到大家... 71.原生JavaScript判断是否为邮箱 复制代码 代码如下: function isEmail(str){ var re=/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-

用SQL语句,删除掉重复项只保留一条

在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 2.删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录 delete fr