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

/**
* @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 攻击

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

  1. PHP不过过滤防止xss攻击的方法

    PHP不过过滤防止xss攻击的方法<pre> $content=htmlspecialchars($content); $pos=strpos($content,"\u" ...

  2. 拦截过滤防御XSS攻击 -- Struts2.3 以及 2.5 的解决方式

    使用Struts2框架开发的后台在防御XSS攻击的时候很多方式都不能用,因为Struts2对请求进行的二次封装有区别.以下针对Struts2的XSS攻击进行拦截过滤防御解决: Struts2.3 本方 ...

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

    概念 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允 ...

  4. 过滤xss攻击和sql注入函数

    /**+----------------------------------------------------------* The goal of this function is to be a ...

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

    XSS攻击在最近很是流行,往往在某段代码里一不小心就会被人放上XSS攻击的代码,看到国外有人写上了函数,咱也偷偷懒,悄悄的贴上来... 原文如下: The goal of this function ...

  6. 文本XSS攻击过滤

    在FCK或百度编辑器等常用富文本编辑器中,通常是会被XSS攻击 处理方法: 文本框模拟输入了以下文本 <span style="dispaly:none" onclick=& ...

  7. 前端过滤XSS攻击

    日常开发过程中,对于存在用户交互的一些门户网站等,过滤xss攻击是必不可少的. 此处主要记录下我在工作过程中的简单处理方法. 前端过滤XSS攻击, 我这里用的是开源工程 js-xss,官网地址:htt ...

  8. XSS攻击过滤处理

    关于XSS攻击 XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中. XSS漏洞的危害 网络钓鱼,包括盗取各类用户账号: 窃取用户cooki ...

  9. 根据白名单过滤 HTML(防止 XSS 攻击)

    https://github.com/leizongmin/js-xss/blob/master/README.zh.md 根据白名单过滤 HTML(防止 XSS 攻击) xss是一个用于对用户输入的 ...

随机推荐

  1. Python Day-1 练习

    作业1 要求:1.输入用户密码 2.认真成功后显示欢迎信息 3.输入三次锁定 代码如下: __author__ = 'zhang.ning' username = "zhangning&qu ...

  2. 读C#开发实战1200例子记录-2017年8月14日11:20:38获取汉字编码值

    try { char chr = textBox1.Text[0]; byte[] gb2312_bt = Encoding.GetEncoding("gb2312").GetBy ...

  3. js模板引擎art-Template(以前的artTemplate)

    使用js.jquery动态生成html会非常麻烦.现在的模板引擎可以很简单的解决这个问题.比如腾讯出的art-Template 官网:http://aui.github.io/art-template ...

  4. linux运行python程序

    linux下有多种方式运行python:   1. 命令行执行: 建立一个*.py文档,在其中书写python代码.之后,在命令行执行: $ python   *.py 注意事项:1. 需要指明文件的 ...

  5. BZOJ1396 识别子串 字符串 SAM 线段树

    原文链接http://www.cnblogs.com/zhouzhendong/p/9004467.html 题目传送门 - BZOJ1396 题意 给定一个字符串$s$,$|s|\leq 10^5$ ...

  6. hive_连续天次计算

    drop table sospdm.tmp_yinfei_yuanzuan_redbag; create table sospdm.tmp_yinfei_yuanzuan_redbag stored ...

  7. URAL 1989 Subpalindromes (多项式hash) +【线段树】

    <题目链接> <转载于 >>>  > 题目大意:给你一段字符串,进行两种操作:1.询问[l,r]这个区间中的字符串是否是回文串: 2.更改该字符串中对应下标的 ...

  8. POJ 1470 Closest Common Ancestors (模板题)(Tarjan离线)【LCA】

    <题目链接> 题目大意:给你一棵树,然后进行q次询问,然后要你统计这q次询问中指定的两个节点最近公共祖先出现的次数. 解题分析:LCA模板题,下面用的是离线Tarjan来解决.并且为了代码 ...

  9. HDU 1710 (二叉树的前序和中序,求后序)

    题目链接 题目大意: 输入二叉树的前序.中序遍历,请输出它的后序遍历 #include <stdio.h> #include <string.h> ; // 长度为n s1 前 ...

  10. Python并发复习4- concurrent.futures模块(线程池和进程池)

    Python标准库为我们提供了threading(多线程模块)和multiprocessing(多进程模块).从Python3.2开始,标准库为我们提供了concurrent.futures模块,它提 ...