-1 javascript encoding uri google-chrome
我想访问以下链接:
http://localhost:8080/lookups/TagGroup.html?
is_guideline_tag=true&field_name=%3C%3Ealert('1')%3E&tag_group_id=38
Run Code Online (Sandbox Code Playgroud)
但是当我将其粘贴到浏览器(Chrome 63.0.3239.84)中时,它变成:
http://localhost:8080/lookups/TagGroup.html?
is_guideline_tag=true&field_name=%3C%3Ealert(%271%27)%3E&tag_group_id=38
Run Code Online (Sandbox Code Playgroud)
因此,单引号替换为%27,我无法访问链接。
我还要提及的是,我上面的链接中的field_name是这样获得的:encodeURIComponent("<>alert('1')>")应该返回%3C%3Ealert('1')%3E
有任何想法吗?
因此撇号已替换为%27,但我无法访问该链接
%27是包含'在URI编码的字符串中的正确,最新的方式(URL中的查询字符串是URI编码的)。如果您在服务器端遇到问题,听起来好像您没有正确进行URI解码。这就是您需要解决的问题。如果您对它进行URI解码,那么您的字段就可以了:
console.log(decodeURIComponent('%3C%3Ealert(%271%27)%3E'));Run Code Online (Sandbox Code Playgroud)
您可能想知道为什么Chrome可以转换'为%27但encodeURIComponent不能转换为。这是因为Chrome浏览器实现了最新的RFC 3986定义,该定义包括'必须编码的保留字符,但encodeURIComponent改用了过时的RFC 2396定义,该定义未列出'为保留字符。
(您也可能会奇怪为什么decodeURIComponent解码%27,如果encodeURIComponent不编码它。这是因为所有的编码实体进行解码,不只是选择的。%nn其中nn是两个十六进制数字总是定义应该解码的编码实体,无论其是否必须原始编码。)
我假设您对查询字符串中的代码也要非常小心...
| 归档时间: |
|
| 查看次数: |
1498 次 |
| 最近记录: |