前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >addslashes注入漏洞与mb_addslashes

addslashes注入漏洞与mb_addslashes

作者头像
ApacheCN_飞龙
发布2019-02-15 10:38:33
7040
发布2019-02-15 10:38:33
举报
文章被收录于专栏:信数据得永生信数据得永生

由于addslashes无视目标字符串的编码,直接按照二进制字节对字符串添加下划线,会导致很多注入隐患。

比如说gbk环境下,有一个宽字符是"\xbf\x27"。虽然它不在gbk的编码范围内,但是会把它当成宽字符解析,攻击者可以通过构造url参数等方式传进来。传统的addslashes函数会直接无视掉"\xbf"而直接对后面的"\x27"加下划线,结果变成了"\xbf\x5c\x27"。这样前面两个字节构成宽字符,后面的"\x27"就会单独被解析。

防止注入的话,能够预编译是最好,不能的话应该按照当前的编码,用mb前缀的字符串处理函数手写一个。

比如下面这个:

代码语言:javascript
复制
function mb_addslashes($str, $enco)
{
  $retstr = "";
  $len = mb_strlen($str, $enco);
  for($i = 0; $i < $len; $i++)
  {
    $chr = mb_substr($str, $i, 1, $enco);
    if($chr == "\0")
      $retstr .= "\\0";
    else if($chr == "'")
      $retstr .= "\\'";
    else if($chr == "\"")
      $retstr .= "\\\"";
    else if($chr == "\\")
      $retstr .= "\\\\";
    else 
      $retstr .= $chr;
  }
  return $retstr;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014年08月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档