2010-10-08 68 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