通俗易懂的php防注入代码

 更新时间:2010年04月07日 15:06:07   作者:  
一直搞.net ,最近研究PHP,也涉及到防注入的安全措施,和.net的大同小异,从网上摘回一篇,作为备注,以供自己需要时查阅。
介绍两种方法吧,首先请把以下代码保存为safe.php放在网站根目录下,然后在每个php文件前加include(“/safe.php“);即可 :

php防注入代码方法一:
复制代码 代码如下:

<?php
//要过滤的非法字符
$ArrFiltrate=array(”‘”,”;”,”union”);
//出错后要跳转的url,不填则默认前一页
$StrGoUrl=””;
//是否存在数组中的值
function FunStringExist($StrFiltrate,$ArrFiltrate){
foreach ($ArrFiltrate as $key=>$value){
if (eregi($value,$StrFiltrate)){
return true;
}
}
return false;
}
//合并$_POST 和 $_GET
if(function_exists(array_merge)){
$ArrPostAndGet=array_merge($HTTP_POST_VARS,$HTTP_GET_VARS);
}else{
foreach($HTTP_POST_VARS as $key=>$value){
$ArrPostAndGet[]=$value;
}
foreach($HTTP_GET_VARS as $key=>$value){
$ArrPostAndGet[]=$value;
}
}
//验证开始
foreach($ArrPostAndGet as $key=>$value){
if (FunStringExist($value,$ArrFiltrate)){
echo “<script language=\”javascript\”>alert(\”非法字符\”);</script>”;
if (emptyempty($StrGoUrl)){
echo “<script language=\”javascript\”>history.go(-1);</script>”;
}else{
echo “<script language=\”javascript\”>window.location=\””.$StrGoUrl.”\”;</script>”;
}
exit;
}
}
?>

php防注入代码方法二:
复制代码 代码如下:

/* 过滤所有GET过来变量 */
foreach ($_GET as $get_key=>$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;
}

相关文章

  • PHP基于自定义类随机生成姓名的方法示例

    PHP基于自定义类随机生成姓名的方法示例

    这篇文章主要介绍了PHP基于自定义类随机生成姓名的方法,结合实例形式分析了php基于数组与字符串的随机数操作生成姓名的相关实现技巧,需要的朋友可以参考下
    2017-08-08
  • php SQL之where语句生成器

    php SQL之where语句生成器

    每次都写SQL条件语句,很麻烦,容易出错,写了个函数整合到数据库类里,用来根据传入的数组,自动生成 SQL的where条件语句
    2009-03-03
  • PHP 进度条函数的简单实例

    PHP 进度条函数的简单实例

    这篇文章主要介绍了PHP 进度条函数的简单实例的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-09-09
  • PHP 5.0对象模型深度探索之对象复制

    PHP 5.0对象模型深度探索之对象复制

    PHP5中的对象模型通过引用来调用对象, 但有时你可能想建立一个对象的副本,并希望原来的对象的改变不影响到副本 . 为了这样的目的,PHP定义了一个特殊的方法,称为__clone. 像__construct和__destruct一样,前面有两个下划线。
    2008-03-03
  • 浅谈ThinkPHP中initialize和construct的区别

    浅谈ThinkPHP中initialize和construct的区别

    下面小编就为大家带来一篇浅谈ThinkPHP中initialize和construct的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】

    PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】

    这篇文章主要介绍了PHP登录验证功能,结合实例形式分析了php登陆验证相关的用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等相关操作技巧,需要的朋友可以参考下
    2019-02-02
  • php数组分页实现方法

    php数组分页实现方法

    这篇文章主要介绍了php数组分页实现方法,涉及php数组操作、数学运算及字符串操作等相关技巧,需要的朋友可以参考下
    2016-04-04
  • php使用timthumb生成缩略图的方法

    php使用timthumb生成缩略图的方法

    这篇文章主要介绍了php使用timthumb生成缩略图的方法,实例分析了PHP调用timthumb生成缩略图的操作技巧与相关注意事项,需要的朋友可以参考下
    2016-01-01
  • PHP的Yii框架中行为的定义与绑定方法讲解

    PHP的Yii框架中行为的定义与绑定方法讲解

    这篇文章主要介绍了PHP的Yii框架中行为的定义与绑定方法,包括对静态方法绑定行为与动态方法绑定行为的讲解,需要的朋友可以参考下
    2016-03-03
  • php表单敏感字符过滤类

    php表单敏感字符过滤类

    这篇文章主要介绍了php表单敏感字符过滤类及其用法实例,详细分析了表单生成与提交等环节针对敏感字符的过滤功能,是非常实用的技巧,需要的朋友可以参考下
    2014-12-12

最新评论