文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
9.1 第三方过滤函数与类
在一些中小型的 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论