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

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

Author: heiyeluren
Date: 2005-7-20

 

时间: 2024-09-13 06:47:22

PHP网站中整体防注入方法的相关文章

PHP中防止SQL注入方法详解_php技巧

问题描述: 如果用户输入的数据在未经处理的情况下插入到一条SQL查询语句,那么应用将很可能遭受到SQL注入攻击,正如下面的例子: 复制代码 代码如下: $unsafe_variable = $_POST['user_input']; mysql_query("INSERT INTO `table` (`column`) VALUES ('" . $unsafe_variable . "')"); 因为用户的输入可能是这样的: 复制代码 代码如下: value');

jsp sql 防注入方法解析

注入法:  从理论上说,认证网页中会有型如:  select * from admin where username='XXX' and password='YYY' 的语句,若在正式运行此句之前,如果没有进行必要的字符过滤,则很容易实施SQL注入.  如在用户名文本框内输入:abc' or 1=1-- 在密码框内输入:123 则SQL语句变成:  select * from admin where username='abc' or 1=1 and password='123' 不管用户输入任

php.ini magic_quotes_gpc配置防注入方法(1/5)

1. php 配置文件 php.ini 中的 magic_quotes_gpc 选项没有打开,被置为 off 2. 开发者没有对数据类型进行检查和转义 不过事实上,第二点最为重要.我认为, 对用户输入的数据类型进行检查,向 mysql教程 提交正确的数据类型,这应该是一个 web 程序员最最基本的素质.但现实中,常常有许多小白式的 web 开发者忘了这点, 从而导致后门大开. 为什么说第二点最为重要?因为如果没有第二点的保证,magic_quotes_gpc 选项,不论为 on,还是为 off,

Python中防止sql注入的方法详解

前言 大家应该都知道现在web漏洞之首莫过于sql了,不管使用哪种语言进行web后端开发,只要使用了关系型数据库,可能都会遇到sql注入攻击问题.那么在Python web开发的过程中sql注入是怎么出现的呢,又是怎么去解决这个问题的? 当然,我这里并不想讨论其他语言是如何避免sql注入的,网上关于PHP(博主注:据说是世界上最屌的语言)防注入的各种方法都有,Python的方法其实类似,这里我就举例来说说. 起因 漏洞产生的原因最常见的就是字符串拼接了,当然,sql注入并不只是拼接一种情况,还有

烟草网站如何实现防攻击、防病毒、防篡改

网站,作为企业网络公众形象的载体,承担了企业形象宣传的重任.在我国,烟草施行的是国家专卖制度,既关注行业行政管理,又关注企业的生产运营,烟草网站既担负着政策信息发布.政府信息公开的职责,又兼有面对烟草企业.消费者等进行信息交互的职责. 有鉴于此,2009年,国家烟草局下发<国家烟草专卖局办公室关于行业信息安全工作有关情况的通知>.该通知明确提出:"加强网站'三防'建设,提高重要信息系统安全防护能力,各单位要按照国务院办公厅文件要求,重点做好行业对外网站网页防攻击.防病毒.防篡改的安全

告诉你几条防骗方法

近日,接连刊登了社会上频频出现的各类骗局.11月6日,记者综合近期屡见不鲜的各类骗局,告诉大家一些日常生活中的防骗方法.这类骗局的目标人群---老年人案例:10月31日,受害人崔大妈正在街上行走,突然有一个妇女向她打听附近有没有一位从新加坡回来的老神医.这时,有一个自称是神医孙子的中年男子登场,以消灾为名,与那名妇女合伙骗走崔大妈现金4万余元及一些黄金首饰.分析:骗局也有它的"目标人群".在这个案例中,骗子的目标人群就是老年人,因为老年人有些迷信,容易上当.对策:提高警惕,不要轻易与陌

实践有效的网站防SQL注入方法(二)

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 姊妹篇"<实践有效的网站防SQL注入(一)>"跟大家交流了防止sql注入的黄金方法,从开发入手,在两个层次解决,我想如果大家按照介绍的步骤都能够做到,我想大家应该能够做到很好的防御效果.但我们说,没有100%的安全,网站的微小功能变动或升级都可能会对全局造成影响,这也就是为什么eesafe网站安全联盟收录的网站

实践有效的网站防SQL注入方法(一)

中介交易 SEO诊断 淘宝客 云主机 技术大厅 几年前,网站中大多数都存在sql注入.sql注入在这几年可以说已经被广大网站管理者所认知,并在搭建网站的时候都能注意到网站防注入这一问题,但为什么我们EeSafe现在收录的网站中,还是有很大一部分存在sql注入问题?我想并不是由于网站站长不知道sql注入的危害(危害我这里就不说了,大家可以去百度等搜索引擎上查找),而是由于网站对于像sql注入这样的问题的防范和发掘不够深造成的,这里我把防范sql的黄金方法和大家交流一下,应该能够在网站防止安全漏洞的

网站防注入与挂马 PHP.INI 安全设置

当要在防止页面攻击时,可在页面的头部include防攻击文件,就像通用防注入文件.我们可以用三种情况来办到: 1.在每个文件内引用.这样的文件是可以,不过如果一个网站内有几百个文件的话就不方便了. 2.在共同包含文件内引用一下,比如 config.inc.php教程.这是一个好办法,也是目前市场上比较流行的做法. 3.在php.ini中引用.在配置文件内引用的话,将影响到所有的网站,包含所有页面,这就像当年流行的一些免费空间商,当你免费开通一个ftp空间,上传网站以后,空间内会出现广告一样.不知