【发布时间】:2018-08-28 13:49:48
【问题描述】:
在 PHP 中,“二进制安全”这个词在我看来像是一种安全功能,可以帮助防御二进制漏洞,例如缓冲区溢出等。
我还知道某些函数具有“多字节感知”替代方案,这些替代方案以 mb_ 为前缀。例如,substr 和 mb_substr。这些函数能够处理消耗超过一个字节的字符。
但是,将二进制数据传递给非二进制安全的函数意味着什么?这是固有的安全风险,还是该函数只会返回警告/错误?
我不是在谈论函数的输出可能会被传递到 SQL、HTML 等中,我是在谈论 PHP 本身对函数的实际处理。
非二进制安全函数是否仅设计用于安全处理文本,并且在将二进制数据传递给它们时存在缓冲区溢出或其他形式的二进制利用的风险?
【问题讨论】:
-
安全意味着它不会失败..与安全无关。欺骗:stackoverflow.com/questions/3264514/…
-
如果给定二进制输入,非二进制安全函数的输出和/或行为是未定义的。正如劳伦斯所说,安全!= 安全。
-
不,二进制安全并不意味着“随机孩子输入一些随机序列的奇怪字符是安全的,这让他们可以访问你的机器”。不是这样的。
-
感谢您的澄清。 @NB我能做些什么来防止这种情况发生?这只是在将用户输入从 PHP 传递出来之前验证用户输入,还是在 PHP 中处理它时我需要做一些事情?例如使用
mb_函数?
标签: php security binary-data