简述:/*************************
说明:
判断传递的变量中是否含有非法字符
如$_POST、$_GET
功能:防注入
**************************/
<?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 (empty($StrGoUrl)){
echo "<script language=\"javascript\">history.go(-1);</script>";
}else{
echo "<script language=\"javascript\">window.location=\"".$StrGoUrl."\";</script>";
}
exit;
}
}
?>
保存为checkpostandget.php
然后在每个php文件前加include(“checkpostandget.php“);即可
方法2
/* 过滤所有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;
}
我们把以上代码放到一个公共的文件里,比如security.inc.php里面,每个文件里都include一下这个文件,那么就能够给任何一个程序进行提交的所有变量进行过滤了,就达到了我们一劳永逸的效果。
分享到:
相关推荐
PHP通用防注入安全代码-修改可用、PHP通用防注入安全代码-修改可用、PHP通用防注入安全代码-修改可用
今天写代码的时候猛然想到是不能能够通过一个文件来处理整个网站中所有可能出现注入的地方进行防范呢?这样就能够不用在每个程序里对每个变量进行过滤,节省了时间和代码。 我们主要是从两点出发,因为我们的获取...
从360提供的PHP防SQL注入代码改成的一个类,从SQL注入和HTTP跨站两个方面入手,解决网站存在安全风险的问题,希望对朋友们有所帮助。
就可以做到页面防注入、跨站 如果想整站防注,就在网站的一个公用文件中,如数据库链接文件config.inc.php中! 添加require_once('waf.php');来调用本代码 常用php系统添加文件 PHPCMS V9 \phpcms\base.php PHPWIND...
sql注入原理及php防注入代码.doc
从360提供的PHP防SQL注入代码改成的一个类,从SQL注入和HTTP跨站两个方面入手,解决网站存在安全风险的问题,希望对朋友们有所帮助。如果小伙伴们有更好的解决方案,欢迎发布过来大家一起学习交流。
本书作者均是专门研究SQL注入的安全专家,他们集众家之长,对应用程序的基本编码和升级维护进行全面跟踪,详细讲解可能引发SQL注入的行为以及攻击者的利用要素,并结合长期实践经验提出了相应的解决方案。...
3.包含SanitizeString.class.php类文件,实例化,用得到的对象根据需求分别调用PIPHP_SanitizeString方法或者PIPHP_MySQLSanitizeString,前者为将可能会被执行的如js代码转义为普通字符串,后者为数据库防注入过滤...
SQL注入是Internet上最危险、最有名的安全漏洞之一,本书是目前唯一一本专门致力于讲解SQL威胁的图书。本书作者均是专门研究SQL注入的安全专家,他们集众家之长,对应用程序的基本编码和升级维护进行全面跟踪,详细...
第4~6章则介绍常见漏洞的审计方法,分别对应基础篇、进阶篇以及深入篇,涵盖SQL注入漏洞、XSS漏洞、文件操作漏洞、代码/命令执行漏洞、变量覆盖漏洞以及逻辑处理等漏洞;第7章介绍二次漏洞的挖掘方法;第8章介绍...
1、PHP注入的基本原理程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对 用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据 库查询代码,根据程序返回的结果,...
第4~6章则介绍常见漏洞的审计方法,分别对应基础篇、进阶篇以及深入篇,涵盖SQL注入漏洞、XSS漏洞、文件操作漏洞、代码/命令执行漏洞、变量覆盖漏洞以及逻辑处理等漏洞;第7章介绍二次漏洞的挖掘方法;第8章介绍...
1、PHP注入的基本原理 程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对 用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据 库查询代码,根据程序返回的...
红鸟PHP安全防护插件是一套通用的PHP安全防护插件; 无需对源代码做任何修改,直接将本文件引入源代码即可,使用非常方便; 从代码层面拦截常见的sql注入、xss跨站等攻击; 拦截规则可自定义增减; 拦截提示字符可...
一直搞.net ,最近研究PHP,也涉及到防注入的安全措施,和.net的大同小异,从网上摘回一篇,作为备注,以供自己需要时查阅。
PHP防注入注意要过滤的信息基本是get,post,然后对于sql就是我们常用的查询,插入等等sql命令了,下面我给各位整理两个简单的例子,希望这些例子能给你网站带来安全. PHP防注入类代码如下: 复制代码 代码如下:<?php ...
本文从开放源代码Web应用程序安全项目(OWASP)社区中列出的Web应用程序的十大安全风险开始,重点关注应用程序层DDoS,SQL注入,跨站点脚本XSS,跨站点请求伪造CSRF和文件包含漏洞 。 详细分析了这些攻击的原理和...