【问题标题】:Why should I urlencode URLs passed via GET为什么我应该对通过 GET 传递的 URL 进行 urlencode
【发布时间】:2012-10-03 15:56:10
【问题描述】:

假设我这样做

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

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

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

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

【问题讨论】:

    标签: php html url get urlencode


    【解决方案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 来决定它是否需要编码。

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

    【讨论】:

      【解决方案2】:

      只要我知道第二个示例非常好,如果您有可能在您的网址中使用 unicode 字符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-26
        • 2013-07-26
        • 2016-12-09
        相关资源
        最近更新 更多