请选择 进入手机版 | 继续访问电脑版
绿茶科技社区

通俗易懂的php防注入代码

2019-9-12 02:13
261
一直搞.net ,最近研究PHP,也涉及到防注入的安全措施,和.net的大同小异,从网上摘回一篇,作为备注,以供自己需要时查阅。
介绍两种方法吧,首先请把以下代码保存为safe.php放在网站根目录下,然后在每个php文件前加include(“/safe.php“);即可 :
php防注入代码方法一:
  1. <?php
  2. //要过滤的非法字符
  3. $ArrFiltrate=array(”‘”,”;”,”union”);
  4. //出错后要跳转的url,不填则默认前一页
  5. $StrGoUrl=””;
  6. //是否存在数组中的值
  7. function FunStringExist($StrFiltrate,$ArrFiltrate){
  8. foreach ($ArrFiltrate as $key=>$value){
  9. if (eregi($value,$StrFiltrate)){
  10. return true;
  11. }
  12. }
  13. return false;
  14. }
  15. //合并$_POST 和 $_GET
  16. if(function_exists(array_merge)){
  17. $ArrPostAndGet=array_merge($HTTP_POST_VARS,$HTTP_GET_VARS);
  18. }else{
  19. foreach($HTTP_POST_VARS as $key=>$value){
  20. $ArrPostAndGet[]=$value;
  21. }
  22. foreach($HTTP_GET_VARS as $key=>$value){
  23. $ArrPostAndGet[]=$value;
  24. }
  25. }
  26. //验证开始
  27. foreach($ArrPostAndGet as $key=>$value){
  28. if (FunStringExist($value,$ArrFiltrate)){
  29. echo “<script language=\”javascript\”>alert(\”非法字符\”);</script>”;
  30. if (emptyempty($StrGoUrl)){
  31. echo “<script language=\”javascript\”>history.go(-1);</script>”;
  32. }else{
  33. echo “<script language=\”javascript\”>window.location=\””.$StrGoUrl.”\”;</script>”;
  34. }
  35. exit;
  36. }
  37. }
  38. ?>
复制代码
php防注入代码方法二:

  1. /* 过滤所有GET过来变量 */
  2. foreach ($_GET as $get_key=>$get_var)
  3. {
  4. if (is_numeric($get_var)) {
  5. $get[strtolower($get_key)] = get_int($get_var);
  6. } else {
  7. $get[strtolower($get_key)] = get_str($get_var);
  8. }
  9. }
  10. /* 过滤所有POST过来的变量 */
  11. foreach ($_POST as $post_key=>$post_var)
  12. {
  13. if (is_numeric($post_var)) {
  14. $post[strtolower($post_key)] = get_int($post_var);
  15. } else {
  16. $post[strtolower($post_key)] = get_str($post_var);
  17. }
  18. }
  19. /* 过滤函数 */
  20. //整型过滤函数
  21. function get_int($number)
  22. {
  23. return intval($number);
  24. }
  25. //字符串型过滤函数
  26. function get_str($string)
  27. {
  28. if (!get_magic_quotes_gpc()) {
  29. return addslashes($string);
  30. }
  31. return $string;
  32. }
复制代码






分享到 :
0 人收藏

1 个回复

倒序浏览
冠军  高级会员 | 5 天前
前排,哇咔咔
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

举报|Archiver|手机版|小黑屋|Lvchakeji Inc.  

Powered by Discuz! X3.3 © 2001-2016 Comsenz Inc.

返回顶部