返回介绍

9.1 第三方过滤函数与类

发布于 2024-10-11 22:07:46 字数 1069 浏览 0 评论 0 收藏 0

在一些中小型的 Web 应用程序中,由于大多数开发者是不怎么懂安全的,所以都会选择一些第三方的过滤函数或者类,直接拿过去套着用,并不知道效果到底怎么样。在 PHP 安全过滤的类里面,比较出名的有出自 80sec 团队给出的一个 SQL 注入过滤的类,在国内大大小小的程序像 discuz、dedecms、phpmywind 等都使用过。

目前大多数应用都有一个参数过滤的统一入口,类似于 dedecms 的代码,如下所示:

foreach ( Array ( '_GET' , '_POST' , '_COOKIE' ) as $_request ) 

  {

  foreach ( $$_request as $_k => $_v ) 

  {

     if ( $_k == 'nvarname' ) ${$_k} = $_v ; 

     else ${$_k} = _RunMagicQuotes ( $_v ); 

  }

}

跟进_RunMagicQuotes() 函数之后的代码如下:

function _RunMagicQuotes ( &$svar ) 

{

   if (! get_magic_quotes_gpc ()) 

   {

    if ( is_array ( $svar )
 
) 

    {

    foreach ( $svar as $_k => $_v ) $svar[$_k] = _RunMagicQuotes ( $_v ); 

    }

    else

    {

    if ( strlen ( $svar ) >0&& preg_match ( '#^ ( cfg_|GLOBALS|_GET|_POST|_COOKIE ) #' , $svar )) 

    {

     exit ( 'Request var not allow ! ' ); 

    }

    $svar = addslashes ( $svar ); 

    }

   }

   return $svar ; 

}

而这里仅仅是使用 addslashes() 函数过滤,确实能防御住一部分漏洞,但是对特定的场景和漏洞就不那么好使了。所以除了总入口,在具体的功能点也需要进行一些过滤。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文