假设解码的百分比编码的URI变成UTF-8是否安全?

时间:2011-10-10 19:09:29

标签: php http uri

RFC 3986声明新的URI方案应该在编码百分比之前先编码为UTF-8。但是,这不适用于以前的URI版本。

是否可以安全地假设所有多字节,百分比编码的URI在通过urldecode()后转换为UTF-8编码的字符串?

例如,如果$_SERVER['REQUEST_URI']的内容按百分比编码:

/b%C3%BCch/w%C3%B6rterb%C3%BCch

将此字符串传递给urldecode()后,我应该有一个多字节字符串。但是我怎么知道字符串的编码是什么?在上面的例子中,它是UTF-8,但总是这样安全吗?

如果假设不安全,是否有办法(mb_detect_encoding除外)检测字符串的编码?我已经检查了请求标题,它们似乎没有任何帮助。

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:0)

因为无论如何都假设它是不安全的(“坏人不关心”),你可以使用mb_check_encoding来测试UTF-8字符串。 UTF的结构在另一种编码中与字符串一致的概率很低。

答案 2 :(得分:0)

你不知道。这取决于生成URI的人员/代码。