我有用户提交的标签,可以是任何类型的(有效)UTF-8字符串。我想知道通过urlencode()
运行它们是否可以安全地将它们包含在URL中。
换句话说,urlencode()是否可以安全地用于有效的UTF-8字符串? (通过有效我的意思是id已经将它们强制编码为UTF-8)
答案 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)
为了完全放在安全的一边,我会首先删除换行符。它们本身并不危险,但它们可以成为利用其他漏洞的垫脚石。