2010-10-08 54 views
0

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

在另一侧的数据,这是我在UTF-8是XML和XML规范禁止使用特殊字符(http://www.w3.org/TR/2006/REC-xml-20060816/#字符集)......

所以我想的是UTF-8是不是安全的,但在XML UTF-8是安全的,可以直接嵌入在HTTP主体,如在MIME多部分机构而不需要做一些类似引用的可打印编码。

BR 斯登

回答

4

HTTP允许任意数据的发送。所以是的; UTF-8对于HTTP是安全的,但在抓握的手中; 0x00在任何地方都不是“安全”的。 HTTP请求和响应主体都有处理任意数据的方法,正如MIME(通常封装HTTP POST主体)一样,即Length:-header。

有没有可能会导致兼容HTTP实现的假设,如果它没有达到长身体进行控制字符:。

+0

UTF-8没有为0x00 – Andrey 2010-10-08 12:29:00

+0

嗨Williham,感谢您的回答 - 我不知道为什么我认为HTTP身体不允许特殊字符...我是白痴。这使我的问题无关紧要。非常感谢回复! – STeN 2010-10-08 13:44:24

+0

嗨安德烈,UTF-8实际允许所有特殊的ASCII字符...检查RFC 3629它说:“...美国ASCII字符编码在一个八位字节具有正常的US-ASCII值...”这使得utf -8向后兼容... BR – STeN 2010-10-08 13:46:08

2

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

此外,有引号的可打印的编码HTTP,也不需要一个多体。

您如何看待Web上的图像? :-)

+0

嗨,图像的例子更清晰。我之所以没有在体内考虑二进制文件,是因为我在SIP世界工作了99%,其中base64几乎在任何地方使用。感谢您的时间。 BR – STeN 2010-10-08 13:49:04