变量安全过滤,防止xss攻击

下面这个方法不管是字符串还是数组,都可以进行过滤

/**
 * @purpose     : 对变量进行安全过滤,使 $_GET、$_POST、$q->record 等变量更安全
 * @author      : daicr
 * @time        : 2018-03-15
 * @param       : array $fArray 需要转换的数组
 * @return      :array $fArray 转换完成的数组
 */
function varFilter ($fArray) {
    if (is_array($fArray)) {
        foreach ( $fArray AS $_arrykey => $_arryval ) {
            if ( is_string($_arryval) ) {
                $fArray[$_arrykey] = trim($fArray[$_arrykey]);                                        // 去除左右两端空格
                $fArray[$_arrykey] = htmlspecialchars($fArray[$_arrykey]);                            // 将特殊字元转成 HTML 格式
                $fArray[$_arrykey] = strip_tags($fArray[$_arrykey]);                                  // 从字符串中去除 HTML 和 PHP 标记
                $fArray[$_arrykey] = str_replace(‘javascript‘, ‘javascript ‘, $fArray[$_arrykey]);    // 禁止 javascript
                if (!get_magic_quotes_gpc()) {                                                        // 当 magic_quotes_gpc 设置为 OFF 时,特殊字符加转移符 \
                    $fArray[$_arrykey] = addslashes($fArray[$_arrykey]);
                }
            }else if (is_array($_arryval)){        // 如果是数组,递归调用
                $fArray[$_arrykey] = varFilter($_arryval);
            }
        }
    } else {
        $fArray = trim($fArray);                                    // 去除左右两端空格
        $fArray = htmlspecialchars($fArray);                        // 将特殊字元转成 HTML 格式
        $fArray = strip_tags($fArray);                              // 从字符串中去除 HTML 和 PHP 标记
        $fArray = str_replace("javascript", "javascript ", $fArray);// 禁止 javascript
        if (!get_magic_quotes_gpc()) {                                                        // 当 magic_quotes_gpc 设置为 OFF 时,特殊字符加转义符 \
            $fArray = addslashes($fArray);
        }
    }
    Return $fArray;
}

下面这个方法只用于过滤字符串中的一些特殊字符

/**
 * @purpose     :    字符串安全过滤函数,可过滤掉空格,*,",‘,;,<,>,{,},\,../,..,./,UNION等
 * @author        :    daicr
 * @time        :    2018-03-15
 * @param         :    string $string 需要进行过滤的字符串
 * @return         :    string $string 过滤完毕的字符串
 */
function strFilter($string) {
    $string = str_replace(‘%20‘,‘‘,$string);        // 过滤 空格
    $string = str_replace(‘%27‘,‘‘,$string);        // 过滤 ‘
    $string = str_replace(‘%2527‘,‘‘,$string);        // 过滤 ‘
    $string = str_replace(‘*‘,‘‘,$string);            // 过滤 *
    $string = str_replace(‘"‘,‘&quot;‘,$string);    // 将 " 转义为html实体
    $string = str_replace("‘",‘‘,$string);            // 过滤 ‘
    $string = str_replace(‘"‘,‘‘,$string);            // 过滤 "
    $string = str_replace(‘;‘,‘‘,$string);            // 过滤 ;
    $string = str_replace(‘<‘,‘&lt;‘,$string);        // 将 < 转义为html实体
    $string = str_replace(‘>‘,‘&gt;‘,$string);        // 将 > 转义为html实体
    $string = str_replace("{",‘‘,$string);            // 过滤 {
    $string = str_replace(‘}‘,‘‘,$string);            // 过滤 }
    $string = str_replace(‘\\‘,‘‘,$string);            // 过滤
    $string = str_replace("../","",$str);            // 过滤 ../
    $string = str_replace("..","",$str);            // 过滤 ..
    $string = str_replace("./","",$str);            // 过滤 ./
    $string = str_ireplace("UNION","",$str);        // 忽略大小写过滤 UNION
    return $string;
}

对用户输入的字符串进行过滤,以防止 xss 攻击

原文地址:https://www.cnblogs.com/chrdai/p/8575221.html

时间: 2024-10-04 02:07:57

变量安全过滤,防止xss攻击的相关文章

特殊字符的过滤,防止xss攻击

概念 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中. 项目环境 spring + struts2 +.....(仅列举相关的) 需求 防止xss攻击 分析 1.防止xss攻击,可以从请求处拦截特殊字符,核心是过滤特殊字符串 2.由于项目是采用struts2来处理请求的,所以应从struts处着手

前端过滤XSS攻击

日常开发过程中,对于存在用户交互的一些门户网站等,过滤xss攻击是必不可少的. 此处主要记录下我在工作过程中的简单处理方法. 前端过滤XSS攻击, 我这里用的是开源工程 js-xss,官网地址:http://jsxss.com/zh/index.html 查看官网可发现,与其他的js库一样,使用js-xss,只需(下载)引入xss.js文件到页面即可. 注意 : xss.js中主要使用到的方法为 filterXSS() 由于我在开发过程中,提交数据多是以表单序列化直接提交的,所以我重写了一下表单

PHP通用的XSS攻击过滤函数,Discuz系统中 防止XSS漏洞攻击,过滤HTML危险标签属性的PHP函数

XSS攻击在最近很是流行,往往在某段代码里一不小心就会被人放上XSS攻击的代码,看到国外有人写上了函数,咱也偷偷懒,悄悄的贴上来... 原文如下: The goal of this function is to be a generic function that can be used to parse almost any input and render it XSS safe. For more information on actual XSS attacks, check out h

文本XSS攻击过滤

在FCK或百度编辑器等常用富文本编辑器中,通常是会被XSS攻击 处理方法: 文本框模拟输入了以下文本 <span style="dispaly:none" onclick="atk();">我是一个span</span> <p style="dispaly:none" onclick="atk();">我是一个p</p> <b style="dispaly:non

XSS攻击过滤处理

关于XSS攻击 XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中. XSS漏洞的危害 网络钓鱼,包括盗取各类用户账号: 窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作: 劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账.强制发表日志.发送电子邮件等: 强制弹出广告页面.刷流量等: 网页挂马: 进行恶意操作,例如任意篡改页面信息.删除文章等: 进行大量的客户端攻击,如DDoS攻击: 获取客

XSS攻击的解决方法

在我上一篇<前端安全之XSS攻击>文中,并没有把XSS攻击的解决办法说完整,而XSS的攻击又那么五花八门,有没有一招“独孤九剑”能够抗衡,毕竟那么多情况场景,开发人员无法一一照顾过来,而今天通过阅读<白帽子讲Web安全>这本书,对应对方式有了更好的总结,分为两类,一是服务端可以干的事,二是客户端可以干的事. 前提 在说XSS解决方式时,有一个前提.就是同源策略——浏览器的同源策略(浏览器安全的基础,即使是攻击脚本也要遵守这法则),限制了来自不同源的“document”或脚本,对当前

转---如何让前端更安全?——XSS攻击和防御详解

前言 平时很少关注安全这块的技术,曾经也买过一本<Web前端黑客技术揭秘>但至今还没翻过,尴尬.今天的早读文章由腾讯优测@小吉带来的分享. 正文从这开始~ 最近深入了解了一下XSS攻击.以前总浮浅的认为XSS防御仅仅只是输入过滤可能造成的XSS而已.然而这池子水深的很呐. XSS的类型 总体来说,XSS分三类,存储型XSS.反射型XSS.DOM-XSS. 存储型XSS 数据库中存有的存在XSS攻击的数据,返回给客户端.若数据未经过任何转义.被浏览器渲染.就可能导致XSS攻击: 反射型XSS 将

XSS攻击处理

1.什么是XSS攻击 XSS又称为CSS(Cross SiteScript),跨站脚本攻击.其原理是攻击者向有XSS漏洞的网站中“嵌入”恶意的HTML代码,当其他用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的.如:盗取用户Cookie.重定向到其他网站等. 理论上,所有可以输入的地方没有对输入数据进行处理的话,都会存在XSS漏洞.漏洞的厉害取决于攻击代码的能力. 2.XSS攻击常见危害 (1).网站钓鱼.网页挂马,包括盗取各类用户账号. (2).获取用户Cookie资料,从而获

XSS 防范XSS 攻击的措施

首先看看跨站脚本漏洞的成因,所谓跨站脚本漏洞其实就是Html的注入问题,恶意用户的输入没有经过严格的控制进入了数据库最终显示给来访的用户,导致可以在来访用户的浏览器里以浏览用户的身份执行HTml代码,数据流程如下: 恶意用户的Html输入————>web程序————>进入数据库————>web程序————>用户浏览器 这里给出一些防范XSS 攻击的措施.必须说明的是,对于XSS 攻击,并不像SQL Injection 那样可以有一劳永逸的解决方案——只需要grep 一下所有的sql