开发者社区> 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

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

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

相关文章
PHP 解决网站大数据大流量与高并发
PHP 解决网站大数据大流量与高并发
0 0
php使用redis异步队列爬取网站图片的教程(1)
php使用redis异步队列爬取网站图片的教程
0 0
node.js 开发网站和传统PHP等开发网站的区别|学习笔记
快速学习 node.js 开发网站和传统PHP等开发网站的区别
0 0
PHP 的基础语法_动态网站和静态网站| 学习笔记
快速学习 PHP 的基础语法_动态网站和静态网站。
0 0
全球 77.5% 的网站都在用 PHP;百度一程序员删库被判 9 个月;OpenCV 4.6 发布 | 思否周刊
全球 77.5% 的网站都在用 PHP;百度一程序员删库被判 9 个月;OpenCV 4.6 发布 | 思否周刊
0 0
PHP Everywhere 三个 RCE 漏洞威胁大量 WordPress 网站
PHP Everywhere 三个 RCE 漏洞威胁大量 WordPress 网站
0 0
PHP开发的网站,如何实现批量打印快递单的功能?
虽然市场中不断有新的编程语言诞生,但不得不承认PHP在web开发领域仍一直占有很大份额,高效开发是他一直以来最大的一个优点,而且他的学习成本也较低,入门门槛较低,和Python一样是解释性语言,很多人都说他是世界上最好的语言。其实语言并没有好坏之分,只有是否适用,每门语言都有自己的优缺点,毕竟想要获得一样东西,总要放弃点什么,有舍有得,看自己怎么权衡,只要能解决问题就是好的,不管黑猫白猫抓到老鼠就是好猫。自从swoole的加持以及和GO语言的结合,也弥补语言本身的很多不足,慢慢缩小和其他语言之间的差距,不过还是有很长的路要走。--题外话
0 0
php + nginx 网站并发压力测试及优化
测试工具: Apache 压力测试工具ab ab是针对apache的性能测试工具,可以只安装ab工具。 ubuntu安装ab
0 0
为什么不用asp而用php开发网站
为什么不用asp而用php开发网站
0 0
为什么很多人学习PHP编程都喜欢自学成才?推荐几个php自学网站
为什么很多人学习PHP编程都喜欢自学成才?推荐几个php自学网站
0 0
+关注
cnbird
阿里云安全专家,主要负责阿里云云产品安全。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
PHP安全开发_从白帽角度做安全
立即下载
PHP在机器学习上的应用及云深度学习平台的架构设计与实现
立即下载
PHP与APM_技术内幕和最佳实践
立即下载