通俗易懂的php防注入代码
一直搞.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; }
顶(0)
踩(0)
下一篇:php循环生成静态页面碰到的问题
- 最新评论