在 utf-8 数据上去除斜杠的推荐方法?

发布于 2024-12-09 12:28:33 字数 248 浏览 0 评论 0原文

我正在将我的网站转换为 utf,除了需要使用 stripslashes() 的遗留代码之外,这大部分都已完成。

我听说过 stripslashes 可能会损坏 utf 数据的报道,但我不确定我明白为什么。 utf 为所有非第一个字符设置高位(以与 ASCII 兼容),那么在 utf 数据上运行是否安全?

如果我尝试对 utf 数据运行 stripslashes,是否存在潜在的安全漏洞。我使用带斜杠的无效 utf 代码运行了一些测试,但无法提出任何

Im converting my site to utf, which is mostly done except there is legacy code which needs to make use of stripslashes()

I've heard reports that stripslashes can corrupt utf data, but Im not sure I understand why. utf sets the upper bit for all non-first characters (to be compatble with ASCII), so is it safe to run on utf data or not?

Are there potential security vulnerabilities if I try to run stripslashes on utf data. I ran a few tests using invalid utf code with slashes, but wasnt able to come up with any

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

倾城花音 2024-12-16 12:28:33

我没有发现 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 字节),随后删除其第二个字符,从而损坏字符串。

I don't see a problem with UTF-8. In fact, most ASCII functions are UTF-8-safe because it is ASCII-compatible. (You only have to worry about lengths and mid-string insertion and deletion.)

UTF-16 and -32, however, are a problem because they may use characters with ASCII values (<0x80) to represent higher codepoints, which may be misinterpreted as ASCII slashes or quotes.

Example: "⁜!" (U+205C U+21) in UTF-16BE is 20 5c 00 21 which may be interpreted as " \0!" (where 0 is the NUL byte) and subsequently have its second character removed, corrupting the string.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文