开发者社区> cnbird> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

PHP网站中整体防注入方法

简介: 今天写代码的时候猛然想到是不能能够通过一个文件来处理整个网站中所有可能出现注入的地方进行防范呢?这样就能够不用在每个程序里对每个变量进行过滤,节省了时间和代码。
+关注继续查看
今天写代码的时候猛然想到是不能能够通过一个文件来处理整个网站中所有可能出现注入的地方进行防范呢?这样就能够不用在每个程序里对每个变量进行过滤,节省了时间和代码。

  


  我们主要是从两点出发,因为我们的获取的变量一般都是通过GET或者POST方式提交过来的,那么我们只要对GET和POST过来的变量进行过滤,那么就能够达到防止注入的效果。而且我们的PHP真是非常好,已经内置了$_GET和$_POST两个数组来存储所有变量,我们要做的工作就是过滤每个变量就可以了。

  下面看具体的代码:

  /*Author: heiyeluren*/

  /* 过滤所有GET过来变量 */

  foreach ($_GET as $get_key=>$get_var)

  {

   if (is_numeric($get_var))

  if (is_numeric($get_var)) {

  $get[strtolower($get_key)] = get_int($get_var);

  } else {

  $get[strtolower($get_key)] = get_str($get_var);

  }

  }

  /* 过滤所有POST过来的变量 */

  foreach ($_POST as $post_key=>$post_var)

  {

  if (is_numeric($post_var)) {

  $post[strtolower($post_key)] = get_int($post_var);

  } else {

  $post[strtolower($post_key)] = get_str($post_var);

  }

  }

  /* 过滤函数 */

  //整型过滤函数

  function get_int($number)

  {

   return intval($number);

  }

  //字符串型过滤函数

  function get_str($string)

  {

   if (!get_magic_quotes_gpc()) {

  return addslashes($string);

   }

   return $string;

  }

  那么我们把以上代码放到一个公共的文件里,比如security.inc.php里面,每个文件里都include一下这个文件,那么就能够给任何一个程序进行提交的所有变量进行过滤了,就达到了我们一劳永逸的效果。

  另外,还有一些其他的过滤方法,比如采用我以前使用的关键字过滤的方法:http://dev.csdn.net/article/71/71475.shtm

  还可以参考三尺寒冰写的方法:http://www.fanghei.com/html/2005-06/20050607114008.htm

  方法是不同的,但是核心就是为了我们的代码更加安全。
 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
为什么不用asp而用php开发网站
为什么不用asp而用php开发网站
32 0
为什么不用asp而用php开发网站
为什么不用asp而用php开发网站
33 0
PHP+MySQL打造XXX管理系统
PHP+MySQL打造XXX管理系统
31 0
centos下 Apache、php、mysql默认安装路径
apache: 如果采用RPM包安装,安装路径应在 /etc/httpd目录下 apache配置文件:/etc/httpd/conf/httpd.conf Apache模块路径:/usr/sbin/apachectl web目录:/var/www/html 如果采用源代码安装,一般默认安装在/usr/local/apache2目录下 php: 如果采用RPM包安装,安装路
3117 0
centos yum安装php+mysql+apache
yum install -y apache yum install -y php yum install -y mysql-server yum install -y  php-mysql支持...
752 0
在CentOs 5.1中使用rpm安装NGINX+php+mysql(一)
一、前言  同志们、朋友们、各位领导,大家好。    VCKBASE 不得了,     网友众多文章好。
841 0
RedHatAS4下Apache2+MySQL+Php+Tomcat整合及虚拟主机配置
作者:杨文军一、本文所用到的软件:Sun的JDK:j2sdk-1_4_2_09-linux-i586.
917 0
MySQL PHP 语法
MySQL PHP 语法 MySQL 可应用于多种语言,包括 PERL, C, C++, JAVA 和 PHP。 在这些语言中,Mysql在PHP的web开发中是应用最广泛。 在本教程中我们大部分实例都采用了 PHP 语言。
805 0
Windows Server 2008,IIS7.5中配置(安装)PHP+MySql运行环境全程实录
一.安装前准备好要用到的文件 mysql-essential-5.1.40-win32.msi (MySql数据库安装文件) php-5.2.0-Win32.zip(PHP代码解析器) phpMyAdmin-3.
2590 0
+关注
cnbird
阿里云安全专家,主要负责阿里云云产品安全。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
复杂PHP系统性能瓶颈排查及优化
立即下载
PHP安全开发_从白帽角度做安全
立即下载
PHP与APM_技术内幕和最佳实践
立即下载