2

假设我这样做

http://site.com/something?url=http://lol.com/lol

这样做有什么好处(例如安全性等)

'http://site.com/something?url=' . urlencode('http://lol.com/lol');

而不是仅仅传入一个未编码版本的url?为什么我应该对通过 GET 传递的东西进行 urlencode 编码,而不是只传递未编码的版本(当然,如果 url 参数中有 & 或 ? 或 = ,那么我肯定应该对其进行编码......但假设他们没有,为什么应该我对它们进行编码)

4

2 回答 2

1

URL 中有一些具有特殊含义的字符。如果您在未编码的情况下传递这些字符,则这些字符在外部 URL(而不是它们所属的内部 URL)中将具有特殊含义。

例如,如果你想通过

http://example.com/foo?1=2&3=4

而且您不对其进行编码,那么您将得到:

http://example.com/?url=http://example.com/foo?1=2&3=4

url is http://example.com/foo?1=2
3 is 4

假设他们没有,我为什么要对它们进行编码

因为那时您必须查看您传递的每个 URL 以决定它是否需要编码。

总是编码更简单,更不容易出错,然后根据具体情况进行决定。

于 2012-10-03T15:57:54.180 回答
0

只要我知道如果您有可能在您的 url 中使用 unicode 字符,第二个示例就很好。

于 2012-10-03T16:02:27.300 回答