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

/**
* @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自定义-分页器

    Python自定义-分页器 分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该在数据库表中的起始位置. 1.设定每页显示数据条数 2.用户输入页码(第一页.第二页...) 3 ...

  2. Junit4 IDEA测试学习一

    1.Junit4 下载 https://github.com/junit-team/junit4/releases 4.12 还需要还导入hamcrest-core-1.3.jar 2.IDEA Te ...

  3. [转] linux学习第四十四篇:Nginx安装,Nginx默认虚拟主机,Nginx域名重定向

    Nginx安装 进入存放源码包的目录: cd /usr/local/src 下载源码包: wget http://nginx.org/download/nginx-1.12.1.tar.gz 解压: ...

  4. java传值和传引用区别

    1. 在java中所有的参数都是传值的,引用符号&的传递是C++中才有的:2. 在java传参中,基本类型(byte--short--int--long--float--double--boo ...

  5. Get与Post区别小结

          Get:是以实体的方式得到由请求Url所指定资源的信息,如果请求Url只是一个数据产生过程,那么最终要在实体中返回的是处理过程的结果所指向的资源,而不是处理过程的描述. Post:是用来向 ...

  6. Zabbix监控Low level discovery实时监控网站URL状态

    今天我们来聊一聊Low level discovery这个功能,我们为什么要用到loe level discovery这个功能呢? 很多时候,在使用zabbix监控一些东西,需要对类似于Itens进行 ...

  7. playbook role应用

    参考: ansible中文权威指南 1. 动态Include 结合when等判断,在满足某个条件的时候加载. - include: test.yml when: ...... handler 中也可以 ...

  8. linux中查看http各种状态数量

    转自: http://www.cnblogs.com/wayne173/p/5652043.html 我们的网站部署在linux的服务器上,特别是web服务器,我们可能有时候做为运维人员,肯定是要查看 ...

  9. hive中,动态添加map和reduce的大小,以增加并行度

    map是配置mapred.max.split.size,来定义map处理文件的大小,默认是256000000字段,换算就是256M.  如果想增加map的并行度,那么就是减少map处理文件的大小即可. ...

  10. P1052 过河 线性dp

    题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数 ...