addslashes注入漏洞与mb_addslashes

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

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

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

比如下面这个:

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;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏未闻Code

机器学习(二)

在现实的问题中,特征变量往往不仅仅只有一个。我们评估一个人能否成为一个人生赢家,不仅仅要考虑他的家产,还有考虑他的父亲的背景,和他的X能力,他的朋友圈,他的长相...

10730
来自专栏数据科学与人工智能

掌握机器学习中数据准备的六个步骤

当今组织继续寻找快速,准确地准备数据的方法,以解决他们的数据挑战并实现机器学习(ML)。 但在将数据引入机器学习模型或任何其他分析项目之前,确保其数据清晰,一致...

11130
来自专栏ATYUN订阅号

AI系统可以学习设计用于研究的RNA分子

核糖核酸(RNA)存在于所有活细胞中。它充当信使,携带来自DNA(脱氧核糖核酸)的指令。当它不能正常工作时,它会严重影响神经系统、心血管和肌肉的调节过程,导致肿...

13440
来自专栏AI研习社

Github项目推荐 | Homemade Machine Learning - 自己动手实践机器学习算法

https://github.com/trekhleb/homemade-machine-learning

38740
来自专栏Java那些事

每天一道leetcode665-非递减数列

给定一个长度为 n 的整数数组,你的任务是判断在最多改变 1 个元素的情况下,该数组能否变成一个非递减数列。 我们是这样定义一个非递减数列的: 对于数组中所有...

13820
来自专栏芋道源码1024

周围的餐馆有哪些?GeoHash算法

当今年代,每个人都有智能手机,出门在外,自然离不开使用手机地图了,查找附近的餐馆,附近的地铁站,非常方便,可是在这项技术背后又隐藏着什么算法呢?这篇博客将会讲述...

16230
来自专栏奔跑的蛙牛技术博客

策略模式

在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 策略模式中专门有一个对象封装算法,...

9520
来自专栏罗超频道

微信7.0:张小龙的未完待续

微信7.0改版,最大看点有两个:一个是时刻短视频,一个是新版看一看,两个改版都让人想起了字节跳动这家公司,后者的抖音和今日头条让巨头们略感紧张——虽然巨头们嘴上...

11840
来自专栏linux、Python学习

让Python输出更漂亮:PrettyPrinter

PrettyPrinter是Python 3.6 及以上版本中的一个功能强大、支持语法高亮、描述性的美化打印包。它使用了改进的Wadler-Leijen布局算法...

25100
来自专栏marsggbo

【转载】双调排序Bitonic Sort,适合并行计算的排序算法

双调排序是data-independent的排序, 即比较顺序与数据无关的排序方法, 特别适合做并行计算,例如用GPU、fpga来计算。

12130

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励