我将我的网站转换为utf,除了遗留代码需要使用stripslashes()
之外,大部分都是这样做的我听说过条带可以破坏utf数据,但我不确定我理解为什么。 utf为所有非第一个字符设置高位(与ASCII兼容),是否可以安全地运行utf数据?
如果我尝试在utf数据上运行stripslashes,是否存在潜在的安全漏洞。我使用带有斜杠的无效utf代码运行了一些测试,但是无法提出任何
答案 0 :(得分:5)
我没有看到UTF-8的问题。实际上,大多数ASCII函数都是UTF-8安全的,因为它与ASCII兼容。 (您只需担心长度和中间字符串插入和删除。)
但是,UTF-16和-32是一个问题,因为它们可能使用带有ASCII值(< 0x80)的字符来表示更高的代码点,这可能被误解为ASCII斜杠或引号。示例:UTF-16BE中的"⁜!"
(U + 205C U + 21)是20 5c 00 21,可以解释为" \0!"
(其中0是NUL字节),随后有第二个删除字符,破坏字符串。