www.adminn.cn
站长正能量分享网!

PHP魔术引号所带来的安全问题分析

AD:阿里云服务器企业会员更优惠 腾讯云香港,韩国免备案服务器1.8折优惠

这篇文章主要介绍了PHP魔术引号所带来的安全问题分析,对于安全编码来说非常重要!需要的朋友可以参考下

PHP通过提取魔术引号产生的“\”字符会带来一定的安全问题,例如下面这段代码片段:

  1. // foo.php?xigr='ryat 
  2. function daddslashes($string$force = 0) { 
  3. !defined('MAGIC_QUOTES_GPC') && define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc()); 
  4. if(!MAGIC_QUOTES_GPC || $force) { 
  5. if(is_array($string)) { 
  6. foreach($string as $key => $val) { 
  7. $string[$key] = daddslashes($val$force); 
  8. else { 
  9. $string = addslashes($string); 
  10. return $string
  11. … 
  12. foreach(array('_COOKIE''_POST''_GET'as $_request) { 
  13. foreach($$_request as $_key => $_value) { 
  14. $_key{0} != '_' && $$_key = daddslashes($_value); 
  15. echo $xigr['hi']; 
  16. // echo \ 

上面的代码原本期望得到一个经过daddslashes()安全处理后的数组变量$xigr['hi'],但是没有对变量$xigr做严格的类型规定,当我们提交一个字符串变量$xigr='ryat,经过上面的处理变为\'ryat,到最后$xigr['hi']就会输出\,如果这个变量引入到SQL语句,那么就会引起严重的安全问题了,对此再来看下面的代码片段:

  1. … 
  2. if($xigr) { 
  3. foreach($xigr as $k => $v) { 
  4. $uids[] = $v['uid']; 
  5. $query = $db->query("SELECT uid FROM users WHERE uid IN ('".implode("','"$uids)."')"); 

利用上面提到的思路,通过提交foo.php?xigr[]='&xigr[][uid]=evilcode这样的构造形式可以很容易的突破GPC或类似的安全处理,形成SQL注射漏洞!对此应给与足够的重视!

模板优惠价: (点击购买)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《PHP魔术引号所带来的安全问题分析》
文章链接:https://www.adminn.cn/news/8891.html
本站资源模板仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。2021.5月起,网站调整,暂不再分享免费模板。谢谢理解

Adminn.Cn 站长分享圈

帝国CMS精品模板腾讯云优惠券,代金券

2次开发,学习研究使用!扫码支付后联系QQ677123发货!

支付宝扫一扫打赏