【发布时间】:2010-01-07 23:59:54
【问题描述】:
我有用户提交的标签可以是任何类型的(有效)UTF-8 字符串。我想知道通过urlencode() 运行它们是否可以安全地将它们包含在 URL 中。
换句话说,urlencode() 是否可以安全地用于有效的 UTF-8 字符串? (通过有效我的意思是 id 已经将它们强制编码为 UTF-8)
【问题讨论】:
-
试试看这里...php.net/manual/en/function.urlencode.php 页面下方有一些讨论,请参阅“dominik dot hofer at gmx dot net”的帖子,它可能会有所帮助
-
Dominik 的问题 (php.net/manual/en/function.urlencode.php#88712) 似乎实际上与生成的字符串对于 javascript/html 不安全这一事实有关。这为 Xeoncross 提出了一个很好的问题:当您的意思是“安全”时,您是指“URL 安全”还是“URL 安全和 HTML 安全”?因为如果您希望 html 安全,除了 urlencode 之外,您还需要使用 htmlentities()。
-
据我所知,在将 URL 放入
<a href="">属性时,您不应该这样做urlencode。那是浏览器的工作。只需htmlspecialchars。 -
好吧,URL 将作为链接嵌入到页面 HTML 中。对于常规内容:如果您要发送 UTF-8 标头,并且您的内容是通过
htmlspecialchars()运行的有效 UTF-8 字符串 - 那么您的安全。只有无效的 UTF-8 字符串或没有 UTF-8 标头会造成问题。 -
@Nicolás 我不知道浏览器会自行处理。如果这是真的,那么我将通过
htmlspecialchars运行我的 URL,就像我的其余代码一样。如果您确定,请将其作为答案提交。