PHP网站中整体防注入方法

原创 2006年06月02日 14:59:00

/*
 * Author: heiyeluren
 * Date: 2005-7-20
 * Blog: http://blog.csdn.net/heiyeshuwu
*/

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

我们主要是从两点出发,因为我们的获取的变量一般都是通过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网站如何防止sql注入?

网站的运行安全肯定是每个站长必须考虑的问题,大家知道,大多数黑客攻击网站都是采用sql注入,这就是我们常说的为什么   ?      最原始的静态的网站反而是最安全的。今天我们讲讲PHP注入的安全规...
  • u019524703
  • u019524703
  • 2014年11月11日 11:52
  • 1643

在PHP中使用 mysqli 并防SQL注入

自从 php5 推出 mysqli 后就开始不提倡使用 mysql_ 开头的接口了,现在使用 mysql_connet 通常调试的时候会报警告说这个不该用 mysqli 使用起来其实更简单 $ur...
  • u013802033
  • u013802033
  • 2015年01月28日 16:44
  • 3901

php 防注入的一些总结

一、几个与特殊字符处理有关的PHP函数  函数名  释义  介绍 htmlspecialchars 将与、单双引号、大于和小于号化成HTML格式 &转成&  "转成" ' ...
  • Soar_Away
  • Soar_Away
  • 2016年07月26日 17:06
  • 2166

如何在PHP中防止SQL注入?

如何在PHP中防止SQL注入? stackoverflow上php中得票最高的一个问题,原文链接 http://stackoverflow.com/questions/60174/how-c...
  • gusgao
  • gusgao
  • 2016年08月17日 15:20
  • 8020

PHP几个防SQL注入攻击自带函数区别

SQL注入攻击是黑客攻击网站最常用的手段。如果你的站点没有使用严格的用户输入检验,那么常容易遭到SQL注入攻击。SQL注入攻击通常通过给站点数据库提交不良的数据或查询语句来实现,很可能使数据库中的纪录...
  • dyt19941205
  • dyt19941205
  • 2016年07月11日 21:49
  • 3240

php过滤提交数据,防止sql注入攻击

幸运的是,PHP 提供了 strip_tags() 函数,这个函数可以清除任何包围在 HTML 标记中的内容。strip_tags() 函数还允许提供允许标记的列表,比如 或 。 浏览器内的数...
  • dongsg11200
  • dongsg11200
  • 2013年08月16日 18:27
  • 683

防网站漏洞扫描asp代码,也就是防注入的通用代码

把下面的代码保存在公用文件里就可以防止注入扫描了,比方说conn.asp 里,根据多年开发的经验建议将网站后台和前台分离,后台一个conn.asp 前台一个conn.asp 前台conn.asp加如下...
  • wkj001
  • wkj001
  • 2016年11月09日 14:29
  • 796

PHP PDO 防止SQL注入

使用PDO的好处: 1> 防止SQL注入 2> 提高执行效率 每条SQL执行前,MYSQL数据库都需要先进行编译(即便是一个空格也可能引起重新编译)。在循环执行多条数据时,使用prepare方式传入不...
  • yyt8yyt8
  • yyt8yyt8
  • 2016年03月28日 10:41
  • 1006

PHP防止SQL注入

我们在查询数据库时,出于安全考虑,需要过滤一些非法字符防止SQL恶意注入,请看一下函数:代码如下:function injCheck($sql_str) { $check = preg_m...
  • loveinc
  • loveinc
  • 2017年03月29日 10:22
  • 365

PHP 防SQL注入和XSS攻击

就是通过把SQL命令、JS脚本等插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.在用户名输入框中输入:' or 1=1#,密码随便输入,这时候的合成后的S...
  • aoshilang2249
  • aoshilang2249
  • 2016年11月21日 22:51
  • 1362
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PHP网站中整体防注入方法
举报原因:
原因补充:

(最多只允许输入30个字)