php教程可以用addslashes函数处理一遍(要get_magic_quotes_gpc()为假才处理,不然就重复转义了!),这样就能达到一定程度的安全要求

比如这样

代码如下 复制代码

if (!get_magic_quotes_gpc()) {

add_slashes($_GET);

add_slashes($_POST);

add_slashes($_COOKIE);

}

function add_slashes($string) {

if (is_array($string)) {

foreach ($string as $key => $value) {

$string[$key] = add_slashes($value);

}

} else {

$string = addslashes($string);

}

return $string;

}

但是还可以更进一步进行重新编码,解码,如下:

代码如下 复制代码

//编码

function htmlencode($str) {

if(empty($str)) return;

if($str=="") return $str;

$str=trim($str);

$str=str_replace("&","&",$str);

$str=str_replace(">",">",$str);

$str=str_replace("<","&lt;",$str);

$str=str_replace(chr(32),"&nbsp;",$str);

$str=str_replace(chr(9),"&nbsp;",$str);

$str=str_replace(chr(34),"&",$str);

$str=str_replace(chr(39),"'",$str);

$str=str_replace(chr(13),"<br />",$str);

$str=str_replace("‘","‘‘",$str);

$str=str_replace("select","select",$str);

$str=str_replace("join","join",$str);

$str=str_replace("union","union",$str);

$str=str_replace("where","where",$str);

$str=str_replace("insert","insert",$str);

$str=str_replace("delete","delete",$str);

$str=str_replace("update","update",$str);

$str=str_replace("like","like",$str);

$str=str_replace("drop","drop",$str);

$str=str_replace("create","create",$str);

$str=str_replace("modify","modify",$str);

$str=str_replace("rename","rename",$str);

$str=str_replace("alter","alter",$str);

$str=str_replace("cast","cas",$str);

return $str;

}

这样就能更放心的对外来数据进行入库处理了, 但是从数据库取出来,在前台显示的时候,必须重新解码一下:

代码如下 复制代码

//解码

function htmldecode($str) {

if(empty($str)) return;

if($str=="")  return $str;

$str=str_replace("select","select",$str);

$str=str_replace("join","join",$str);

$str=str_replace("union","union",$str);

$str=str_replace("where","where",$str);

$str=str_replace("insert","insert",$str);

$str=str_replace("delete","delete",$str);

$str=str_replace("update","update",$str);

$str=str_replace("like","like",$str);

$str=str_replace("drop","drop",$str);

$str=str_replace("create","create",$str);

$str=str_replace((www.111cn.net)"modify","modify",$str);

$str=str_replace("rename","rename",$str);

$str=str_replace("alter","alter",$str);

$str=str_replace("cas","cast",$str);

$str=str_replace("&amp;","&",$str);

$str=str_replace("&gt;",">",$str);

$str=str_replace("&lt;","<",$str);

$str=str_replace("&nbsp;",chr(32),$str);

$str=str_replace("&nbsp;",chr(9),$str);

$str=str_replace("&",chr(34),$str);

$str=str_replace("'",chr(39),$str);

$str=str_replace("<br />",chr(13),$str);

$str=str_replace("‘‘","‘",$str);

return $str;

}

虽然多了一步编码,解码的过程,但是安全方面,会更进一步,要如何做,自己取舍吧。

再附一些

代码如下 复制代码

function safe_replace($string) {

$string = str_replace(‘ ‘,‘‘,$string);

$string = str_replace(‘‘‘,‘‘,$string);

$string = str_replace(‘‘‘,‘‘,$string);

$string = str_replace(‘*‘,‘‘,$string);

$string = str_replace(‘"‘,‘"‘,$string);

$string = str_replace("‘",‘‘,$string);

$string = str_replace(‘"‘,‘‘,$string);

$string = str_replace(‘;‘,‘‘,$string);

$string = str_replace(‘

$string = str_replace(‘>‘,‘>‘,$string);

$string = str_replace("{",‘‘,$string);

$string = str_replace(‘}‘,‘‘,$string);

return $string;

}

更全面的

代码如下 复制代码

//处理提交的数据

function htmldecode($str) {

if (empty ( $str ) || "" == $str) {

return "";

}

$str = strip_tags ( $str );

$str = htmlspecialchars ( $str );

$str = nl2br ( $str );

$str = str_replace ( "?", "", $str );

$str = str_replace ( "*", "", $str );

$str = str_replace ( "!", "", $str );

$str = str_replace ( "~", "", $str );

$str = str_replace ( "$", "", $str );

$str = str_replace ( "%", "", $str );

$str = str_replace ( "^", "", $str );

$str = str_replace ( "^", "", $str );

$str = str_replace ( "select", "", $str );

$str = str_replace ( "join", "", $str );

$str = str_replace ( "union", "", $str );

$str = str_replace ( "where", "", $str );

$str = str_replace ( "insert", "", $str );

$str = str_replace ( "delete", "", $str );

$str = str_replace ( "update", "", $str );

$str = str_replace ( "like", "", $str );

$str = str_replace ( "drop", "", $str );

$str = str_replace ( "create", "", $str );

$str = str_replace ( "modify", "", $str );

$str = str_replace ( "rename", "", $str );

$str = str_replace ( "alter", "", $str );

$str = str_replace ( "cast", "", $str );

$farr = array ("//s+/", //过滤多余的空白

"/]*?)>/isU", //过滤

;

$tarr = array (" ", "", //如果要直接清除不安全的标签,这里可以留空

"" );

return $str;

}

from:http://www.111cn.net/phper/phpanqn/55876.htm

原文:http://blog.csdn.net/mailangel123/article/details/39293279

php 过滤危险字符,php过滤特殊危险字符的总结相关推荐

  1. mysql 危险字符_PHP过滤指定字符串,过滤危险字符

    安全过滤函数,用于过滤危险字符 function safe_replace($string) { $string = str_replace(' ','',$string); $string = st ...

  2. php过滤非法字符函数,利用php怎么对非法字符进行过滤

    利用php怎么对非法字符进行过滤 发布时间:2020-12-28 16:41:22 来源:亿速云 阅读:94 作者:Leah 这篇文章将为大家详细讲解有关利用php怎么对非法字符进行过滤,文章内容质量 ...

  3. Spring 字符编码过滤

    在项目下的web.xml文件中配置字符编码过滤 <!-- 配置编码过滤器,保存中文的时候用到 --><filter><filter-name>encodingFil ...

  4. php过滤4字节的字符串,过滤utf8 字符中超过三个字节的字符,或者非utf8字符

    function filterUtf8($str) { /*utf8 编码表: * Unicode符号范围 | UTF-8编码方式 * u0000 0000 - u0000 007F | 0xxxxx ...

  5. java io流过滤流_JAVA io流 文件流 字节流 字符流 过滤流 缓冲流

    一.概念 1.1.按流向分类: 输入流: 程序可以从中读取数据的流. 输出流: 程序能向其中写入数据的流. 1.2.按数据传输单位分类: 字节流:以字节(8位二进制)为单位进行处理.主要用于读写诸如图 ...

  6. grep或/与的多重过滤,包含ABC,但不含ABCD的字符echo输出带颜色的字符

    背景:还是因为最近压测,要判定设备是否存在crash,grep crash之后,但是总有一些其他关键词的干扰,例如:crash_event,no crash等,所以梅开二度,再次修改脚本,来一个完整判 ...

  7. php 对全角字符的过滤,php在做敏感词过滤时怎么解决用特殊符号分割、简繁体、半角全角,来绕开过滤的问题?...

    彻底地过滤敏感词 回复内容: 彻底地过滤敏感词 过滤和谐词其实并不是一个好策略,有一万种说出敏感词的方法,就一定会有第一万零一种,如果你反复设置程序去和谐这些词,最后会发现,你的会员连最基本的一些话都 ...

  8. java字符流的父类_Java基于代码实战的字符流父类、字符转换流、缓冲字符流、过滤流...

    1. Java输入输出(I/O)流的知识回顾: 补充:因为这篇文章是基于上一篇的延续,因此将上一篇进行简单的回顾,以便理解本节内容. 1)输入输出(I/O)流分类:共分为字节型输入输出流和字符型输入输 ...

  9. [转] java - 过滤ASCII码中的不可见字符, ASCII三部分, 各控制字符详解

    标签 PostgreSQL , java , Greenplum , 0x00 , 空字符 , NUL , 数据清洗 , 规则 , 过滤 , 非法字符 背景 原文 http://www.codeweb ...

  10. 过滤ASCII码中的不可见字符, ASCII三部分, 各控制字符详解, 去^@,^M

    今天产品部同事报告了一个BUG,经过调试发现,由于用户输入的字符串中,包含字符0x1E, 也就是"记录分隔符"(Record Separator, Notepad++ 显示为[RS ...

最新文章

  1. Network Manager碰到的问题
  2. java linkedlist排序_用Java对用户定义对象的LinkedList进行排序
  3. Docker报错 WARNING: IPv4 forwarding is disabled. Networking will not work.
  4. LeetCode 205 Isomorphic Strings(同构的字符串)(string、vector、map)(*)
  5. Python绘图之matplotlib基础教程:matplotlib库图表绘制中常规设置大全(交互模式、清除原有图像、设置横坐标显示文字/旋转角度、添加图例、绘图布局自动调整、图像显示、图像暂停)
  6. PCB设计必知:布局及设计规范
  7. Mysql 5.7 错误号码1862 Your password has expired. To log in you must change it using a client...
  8. ubuntu16.04中安装MESA 17.3.3
  9. 计算机组成原理74138译码器连接,74138(74138译码器工作原理)
  10. 蛋白质翻译后修饰分析简介
  11. recovery mode
  12. springboot发送qq邮件详细步骤
  13. python如何获取图片的尺寸大小_Python获取图片的大小/尺寸
  14. 用java下载apk解析包出错_教大家解析包时出现问题怎么解决
  15. 《Dreamweaver CS6 完全自学教程》笔记 第十四章:使用 CSS 设计网页
  16. Warning: Accessing non-existent property ‘cd‘ of module exports inside circular dependency
  17. 透明图片怎么发给别人_如何在网上 1 分钟就搜到高清优质图片?这 3 个搜图网站一定要收藏好...
  18. 3个妙招,克服面试焦虑,紧张
  19. python机器学习之SVM分类预测电芯状态
  20. python集合是什么意思_Python集合是什么,为什么应该使用以及如何使用?

热门文章

  1. 贝叶斯学习举例--学习分类文本
  2. Zookeeper分布式集群部署
  3. LeetCode-剑指 Offer 53 - II. 0~n-1中缺失的数字
  4. Hadoop 2.0联邦机制
  5. numpy.arcsin详解
  6. 【机器学习算法-python实现】PCA 主成分分析、降维
  7. HBase Filter及对应Shell--转
  8. 海量存储系列上--转载,值得一读
  9. Linux定时增量更新文件--转
  10. 产品分析报告|读书新贵——《网易蜗牛读书》