【问题标题】:Do browsers encode in punycode only domain or whole url?浏览器是否仅在 punycode 域或整个 url 中编码?
【发布时间】:2012-04-02 23:21:25
【问题描述】:

我正在阅读有关 IDN 同形异义词攻击的信息,但没有准确说明浏览器是否仅在 punycode 域中编码或包含 URL 的其余部分(路径和查询)。所以我的问题是流行的浏览器之一(FF、IE、Chrome、Safari、Opera)是否使用 punycode 对 URL 的其余部分(确切地说是 IRI)进行编码?

【问题讨论】:

    标签: browser idn punycode


    【解决方案1】:

    只有域名部分是用punycode编码的。这是由于对(传统)域名中允许的字符施加的限制。 URL的路径部分没有这样的限制,所以经常使用UTF-8。

    【讨论】:

    • 我知道(或至少假设)你没有魔法水晶球 :-),我不希望有明确的答案(或任何答案),但如果你能分享你的意见, 一些浏览器开始在路径部分使用 punycode 的可能性有多大?
    • 我认为这种可能性非常低,即使不是零。 IDNA 仅用于域名。我所知道的一切都可以在Internationalized domain name找到。
    • @Antonio URL 的路径部分不仅仅使用 UTF-8,它通常使用 UTF-8 编码版本的字节的百分比编码版本(因为在路径被传递,服务器应该为实际呈现的字节假定 ISO 8859-1)。 punycoding 仅用于域名(实际上,它仅用于单个部分),因为它是在 URL 检索的完全不同(且更早)阶段处理的。
    • @DonalFellows 是正确的,因为 URL 不允许使用 UTF-8。然而,用于 URL 的 RFC (tools.ietf.org/html/rfc3986) 将字符定义为 ASCII,而不是 8859-1 (Latin1)。无论哪种方式,路径中的所有 unicode 数据都应该以百分比编码值的形式出现。
    猜你喜欢
    • 1970-01-01
    • 2014-02-24
    • 2013-07-14
    • 2012-12-03
    • 2023-04-09
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多