这是url encode /这个服务器正确处理解码的正确方法吗?

时间:2018-06-14 01:34:24

标签: javascript security urlencode

在浏览器中,我向someurl.com/route?url=<some other url>提出请求。

这适用于大多数网址。当一个非ascii角色发挥作用时会出现问题。

假设我想要作为查询参数传递的网址是:https://ja.wikipedia.org/wiki/また

所以我encodeURIComponent我的网址,现在我有:https%3A%2F%2Fja.wikipedia.org%2Fwiki%2F%E3%81%BE%E3%81%9F

并将请求发送至:someurl.com/route?url=https%3A%2F%2Fja.wikipedia.org%2Fwiki%2F%E3%81%BE%E3%81%9F

...仅收到400错误请求错误。为了让服务器接受我的输入并正确处理它,我必须对网址的また部分进行编码,然后重新编码整个网址。我最终做encodeURIComponent(encodeURI(url)),结果是:

https%3A%2F%2Fja.wikipedia.org%2Fwiki%2F%25E3%2581%25BE%25E3%2581%259F

您可以看到また部分是双重编码的。我正在试图判断这是否存在风险。

1)我希望编码一次。这是不正确的还是&#34;错误&#34;是不止一次的网址编码?

2)如果是,这表明存在安全问题?这是否意味着服务器不止一次解码?

0 个答案:

没有答案