gpt4 book ai didi

javascript - url应该以编码形式还是解码形式存储?

转载 作者:可可西里 更新时间:2023-11-01 09:35:56 27 4
gpt4 key购买 nike

我的问题有点奇怪,但让我解释一下:

  1. 假设有效的 URI 不允许根据 RFC-2396 使用 unicode,则 URI 中的所有 unicode 都应使用百分比编码进行转义。

  2. 一个有效的 URL 应该是一个有效的 URI,所以我们应该使用 http://example.com/%E4%BD%A0%E5%A5%BD 而不是 http://example.com/你好 发出请求或将它们放入 href 时(尽管大多数浏览器可以处理后一种情况)。

  3. 此外,我们接受用户提交的 URL,这些 URL 也经过编码(因为当您从地址栏复制 URL 时,浏览器会对它们进行编码)。

  4. 因此我们决定(可能是错误的)将它们存储为 http://example.com/%E4%BD%A0%E5%A5%BD,而不是http://example.com/你好,毕竟这是原始输入和正确的 url。

当我尝试显示此类 URL 时,我的问题来了,假设它们是用户提交的,我需要对这些数据运行 xss 过滤器。一些实现,例如 xss-filters似乎在运行 encodeURI作为过滤器的一部分,意味着 % 将被双重编码,例如。 %E4 -> %25E4,在这个过程中破坏了 url。

那么我们是否应该以解码形式存储 url(即使它们是无效的)?在输出上运行 decodeURI 对我来说没有多大意义......

最佳答案

首先,RFC 2396 已被 RFC 3986 废弃.其次,,如果您的存储机制允许,您应该以解码形式存储您的 URI。

更新来自 Section 2.4

Under normal circumstances, the only time when octets within a URIare percent-encoded is during the process of producing the URI fromits component parts.

更新 2此外,表示 URI 的一串 unicode 字符实际上是一个 IRI。参见 RFC 3987

关于javascript - url应该以编码形式还是解码形式存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30526880/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com