【问题标题】:Is utf-8 safe for the http?utf-8 对 http 安全吗?
【发布时间】:2011-04-22 20:49:16
【问题描述】:

如果我有 utf-8 编码的数据,以 HTTP 正文发送它们是否安全?问题是 utf-8 数据可能包含控制字符,包括空字符(二进制零),这当然是 http RFC 所不允许的。那么如何处理这些数据呢?用 base64 编码?

另一方面,我在 utf-8 中的数据是 XML,XML 规范禁止使用特殊字符(http://www.w3.org/TR/2006/REC-xml-20060816/#charsets )...

所以我猜想 utf-8 不安全,但是 utf-8 中的 XML 是安全的,可以直接嵌入到 http 正文中,例如在 MIME 多部分正文 中,无需执行类似 quoted-printable 编码的操作。

BR 钢

【问题讨论】:

    标签: xml http utf-8 base64


    【解决方案1】:

    HTTP 允许发送任意数据。所以是的; UTF-8 对 HTTP 来说是安全的,但很容易掌握; 0x00 在任何地方都不是真正“安全”的。 HTTP 请求体和响应体都有处理任意数据的方法,MIME(通常封装 HTTP POST 体)也是如此,即 Length:-header。

    没有任何控制字符可以导致兼容的 HTTP 实现假定正文在未达到长度时已完成:。

    【讨论】:

    • 您好 Williham,感谢您的回答 - 我不知道为什么我认为 HTTP 正文不允许特殊字符...我是白痴。这使我的问题无关紧要。非常感谢您的回复!
    • 嗨 Andrey,utf-8 实际允许所有特殊的 ASCII 字符...检查这个 RFC 3629 它说“...US-ASCII 字符被编码在一个具有正常 US-ASCII 值的八位字节中。 .." 这使得 utf-8 向后兼容...BR
    【解决方案2】:

    HTTP 消息体可以包含任意数据(正如 Williham 指出的那样)。

    此外,HTTP 中有带引号的可打印编码,您也不需要多部分正文。

    您认为网络上的图像如何工作? :-)

    【讨论】:

    • 您好,带有图像的示例更加清晰。我之所以没有在正文中考虑二进制文件是因为我 99% 都在 SIP 世界中工作,base64 几乎无处不在。感谢您的宝贵时间。 BR
    猜你喜欢
    • 2011-04-19
    • 2011-09-05
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 2012-05-07
    相关资源
    最近更新 更多