热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php过滤特殊危险字符的总结

在网站中表单提交或url获取值我们都可能碰到一些安全问题,下面我总结了一些常用的过滤一些危险特殊字符的解决方法,一般,对于传进来的字符,php可以用addslashes函数处理一遍(要get_magic_quotes_g...
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
当前位置:首页 > PHP教程 > php函数 > 列表
php过滤特殊危险字符的总结
发布: 来源:  添加日期:2014-08-21 15:39:32 浏览: 评论:0 

在网站中表单提交或url获取值我们都可能碰到一些安全问题,下面我总结了一些常用的过滤一些危险特殊字符的解决方法,一般,对于传进来的字符,php可以用addslashes函数处理一遍(要get_magic_quotes_gpc()为假才处理,不然就重复转义了!),这样就能达到一定程度的安全要求,比如这样,代码如下:

  1. if (!get_magic_quotes_gpc()) {      
  2.      add_slashes($_GET);      
  3.      add_slashes($_POST);      
  4.      add_slashes($_COOKIE);      
  5. }      
  6.       
  7. function add_slashes($string) {      
  8.      if (is_array($string)) {      
  9.          foreach ($string as $key => $value) {      
  10.              $string[$key] = add_slashes($value);      
  11.          }      
  12.      } else {      
  13.          $string = addslashes($string);      
  14.      }  
  15.      return $string;      

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

//编码 
  1. function htmlencode($str) {       
  2.       if(emptyempty($str)) return;  
  3.       if($str==""return $str;        
  4.       $str=trim($str);  
  5.       $str=str_replace("&","&",$str);  
  6.       $str=str_replace(">",">",$str);  
  7.       $str=str_replace("<","<",$str);  
  8.       $str=str_replace(chr(32)," ",$str);  
  9.       $str=str_replace(chr(9)," ",$str);  
  10.       $str=str_replace(chr(34),"&",$str);  
  11.       $str=str_replace(chr(39),"&#39;",$str);  
  12.       $str=str_replace(chr(13),"",$str);  
  13.       $str=str_replace("&#39;","&#39;&#39;",$str);  
  14.       $str=str_replace("select","sel&#101;ct",$str);  
  15.       $str=str_replace("join","jo&#105;n",$str);  
  16.       $str=str_replace("union","un&#105;on",$str);  
  17.       $str=str_replace("where","wh&#101;re",$str);  
  18.       $str=str_replace("insert","ins&#101;rt",$str);  
  19.       $str=str_replace("delete","del&#101;te",$str);  
  20.       $str=str_replace("update","up&#100;ate",$str);  
  21.       $str=str_replace("like","lik&#101;",$str);  
  22.       $str=str_replace("drop","dro&#112;",$str);  
  23.       $str=str_replace("create","cr&#101;ate",$str);  
  24.       $str=str_replace("modify","mod&#105;fy",$str);  
  25.       $str=str_replace("rename","ren&#097;me",$str);  
  26.       $str=str_replace("alter","alt&#101;r",$str);  
  27.       $str=str_replace("cast","ca&#115;",$str);        
  28.       return $str;   

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

  1. //解码 
  2.  
  3. function htmldecode($str) {       
  4.       if(emptyempty($str)) return;  
  5.       if($str=="")  return $str;  
  6.       $str=str_replace("sel&#101;ct","select",$str);  
  7.       $str=str_replace("jo&#105;n","join",$str);  
  8.       $str=str_replace("un&#105;on","union",$str);  
  9.       $str=str_replace("wh&#101;re","where",$str);  
  10.       $str=str_replace("ins&#101;rt","insert",$str);  
  11.       $str=str_replace("del&#101;te","delete",$str);  
  12.       $str=str_replace("up&#100;ate","update",$str);  
  13.       $str=str_replace("lik&#101;","like",$str);  
  14.       $str=str_replace("dro&#112;","drop",$str);  
  15.       $str=str_replace("cr&#101;ate","create",$str);  
  16.       $str=str_replace("mod&#105;fy","modify",$str);  
  17.       $str=str_replace("ren&#097;me","rename",$str);  
  18.       $str=str_replace("alt&#101;r","alter",$str);  
  19.       $str=str_replace("ca&#115;","cast",$str);  
  20.       $str=str_replace("&","&",$str);  
  21.       $str=str_replace(">",">",$str);  
  22.       $str=str_replace("<","<",$str);  
  23.       $str=str_replace(" ",chr(32),$str);  
  24.       $str=str_replace(" ",chr(9),$str);  
  25.       $str=str_replace("&",chr(34),$str);  
  26.       $str=str_replace("&#39;",chr(39),$str);  
  27.       $str=str_replace("",chr(13),$str);  
  28.       $str=str_replace("&#39;&#39;","&#39;",$str);   //开源代码phpfensi.com     
  29.       return $str;  

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

再附一些代码如下:

  1. function safe_replace($string) { 
  2.  $string = str_replace(&#39; &#39;,&#39;&#39;,$string); 
  3.  $string = str_replace(&#39;&#39;&#39;,&#39;&#39;,$string); 
  4.  $string = str_replace(&#39;&#39;&#39;,&#39;&#39;,$string); 
  5.  $string = str_replace(&#39;*&#39;,&#39;&#39;,$string); 
  6.  $string = str_replace(&#39;"&#39;,&#39;"&#39;,$string); 
  7.  $string = str_replace("&#39;",&#39;&#39;,$string); 
  8.  $string = str_replace(&#39;"&#39;,&#39;&#39;,$string); 
  9.  $string = str_replace(&#39;;&#39;,&#39;&#39;,$string); 
  10.  $string = str_replace(&#39;<&#39;,&#39;<&#39;,$string); 
  11.  $string = str_replace(&#39;>&#39;,&#39;>&#39;,$string); 
  12.  $string = str_replace("{",&#39;&#39;,$string); 
  13.  $string = str_replace(&#39;}&#39;,&#39;&#39;,$string); 
  14.  return $string
  15.  
  16. //更全面的代码如下: 
  17.  
  18. //处理提交的数据  
  19. function htmldecode($str) {  
  20.  if (emptyempty ( $str ) || "" == $str) {  
  21.  return "";  
  22.  }  
  23.    
  24.  $str = strip_tags ( $str );  
  25.  $str = htmlspecialchars ( $str );  
  26.  $str = nl2br ( $str );  
  27.  $str = str_replace ( "?"""$str );  
  28.  $str = str_replace ( "*"""$str );  
  29.  $str = str_replace ( "!"""$str );  
  30.  $str = str_replace ( "~"""$str );  
  31.  $str = str_replace ( "$"""$str );  
  32.  $str = str_replace ( "%"""$str );  
  33.  $str = str_replace ( "^"""$str );  
  34.  $str = str_replace ( "^"""$str );  
  35.  $str = str_replace ( "select"""$str );  
  36.  $str = str_replace ( "join"""$str );  
  37.  $str = str_replace ( "union"""$str );  
  38.  $str = str_replace ( "where"""$str );  
  39.  $str = str_replace ( "insert"""$str );  
  40.  $str = str_replace ( "delete"""$str );  
  41.  $str = str_replace ( "update"""$str );  
  42.  $str = str_replace ( "like"""$str );  
  43.  $str = str_replace ( "drop"""$str );  
  44.  $str = str_replace ( "create"""$str );  
  45.  $str = str_replace ( "modify"""$str );  
  46.  $str = str_replace ( "rename"""$str );  
  47.  $str = str_replace ( "alter"""$str );  
  48.  $str = str_replace ( "cast"""$str );  
  49.    
  50.  $farr = array ("//s+/", //过滤多余的空白  
  51. "/<(//?)(img|script|i?frame|style|html|body|title|link|meta|/?|/%)([^>]*?)>/isU", //过滤 
  52. "/(<[^>]*)on[a-zA-Z]+/s*=([^>]*>)/isU" )//过滤Javascript的on事件  
  53. ;  
  54.  $tarr = array (" """//如果要直接清除不安全的标签,这里可以留空  
  55. "" );  
  56.  return $str;  

推荐阅读
  • 本文将深入探讨PHP编程语言的基本概念,并解释PHP概念股的含义。通过详细解析,帮助读者理解PHP在Web开发和股票市场中的重要性。 ... [详细]
  • 解决网站乱码问题的综合指南
    本文总结了导致网站乱码的常见原因,并提供了详细的解决方案,包括文件编码、HTML元标签设置、服务器响应头配置、数据库字符集调整以及PHP与MySQL交互时的编码处理。 ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 汇编语言等号伪指令解析:探究其陡峭的学习曲线
    汇编语言以其独特的特性和复杂的语法结构,一直被认为是编程领域中学习难度较高的语言之一。本文将探讨汇编语言中的等号伪指令及其对初学者带来的挑战,并结合社区反馈分析其学习曲线。 ... [详细]
  • 本文介绍如何在Linux服务器之间使用SCP命令进行文件传输。SCP(Secure Copy Protocol)是一种基于SSH的安全文件传输协议,支持从远程机器复制文件到本地服务器或反之。示例包括从192.168.45.147复制tomcat目录到本地/home路径。 ... [详细]
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 本文探讨了如何在 PHP 的 Eloquent ORM 中实现数据表之间的关联查询,并通过具体示例详细解释了如何将关联数据嵌入到查询结果中。这不仅提高了数据查询的效率,还简化了代码逻辑。 ... [详细]
  • 深入理解Shell脚本编程
    本文详细介绍了Shell脚本编程的基础概念、语法结构及其在操作系统中的应用。通过具体的示例代码,帮助读者掌握如何编写和执行Shell脚本。 ... [详细]
  • 本文介绍了如何利用npm脚本和concurrently工具,实现本地开发环境中多个监听服务的同时启动,包括HTTP服务、自动刷新、Sass和ES6支持。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 本文介绍 PHP 函数 mysql_field_len 的使用方法,该函数用于返回 MySQL 查询结果集中指定字段的长度。适用于 PHP 4 和 PHP 5 版本。 ... [详细]
  • 本文详细介绍了Python编程语言的学习路径,涵盖基础语法、常用组件、开发工具、数据库管理、Web服务开发、大数据分析、人工智能、爬虫开发及办公自动化等多个方向。通过系统化的学习计划,帮助初学者快速掌握Python的核心技能。 ... [详细]
author-avatar
手机用户2602914917
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有