PHP:urlencode()是一种在URL中允许有效UTF-8字符串的安全方法吗?

时间:2010-01-07 23:59:55

标签: php url utf-8

我有用户提交的标签,可以是任何类型的(有效)UTF-8字符串。我想知道通过urlencode()运行它们是否可以安全地将它们包含在URL中。

换句话说,urlencode()是否可以安全地用于有效的UTF-8字符串? (通过有效我的意思是id已经将它们强制编码为UTF-8)

3 个答案:

答案 0 :(得分:17)

urlencode不依赖于特定的字符编码。它只是查看字节,将它们解释为ASCII字符并替换ASCII中不允许的任何字节(0x80-0xFF)或URL中不允许的字节。

现在回答您的问题:是的,使用urlencode会对任何字符编码中的任何字符串进行编码以便安全使用 - 但仅限于URL查询!由于urlencode根据application/x-www-form-urlencoded格式输入格式,该格式与空格编码方式中的“正常”percent encoding不同:在 application / x-www-form-urlencoded中空格被+替换,而“普通”百分比编码将其替换为%20

如果您想要“正常”百分比编码,请改用rawurlencode

答案 1 :(得分:0)

是的,urlencode()应该从任何输入字符串中创建一个安全的URL字符串。只要该URL映射到(folder/file/htaccess),其中没有任何时髦的字符。每当用户可以发布一些有趣的东西时,我都喜欢这个功能:

utf8_encode()

答案 2 :(得分:0)

为了完全放在安全的一边,我会首先删除换行符。它们本身并不危险,但它们可以成为利用其他漏洞的垫脚石。