Sim*_*aur 5 java url spring character-encoding spring-boot
我有一个带有 GET 服务的 Spring Boot 应用程序。
@RequestMapping(value = "/abc/track/{type}", method = RequestMethod.GET)
public void DummFunc(
@RequestParam(value="subs", required = false) String sub,
, HttpServletResponse response) {}
Run Code Online (Sandbox Code Playgroud)
值subs是一个编码值。
如果我将以下作为值传递给参数 subs
{%22endpoint%22:%22https://def.abc.com/tyu/send/eD3vpGNQW28:APA91bHOo8rYrV0xccdQz3okjZJG-QGrJX8LG6ahJnEUpMNfGedqi3hJxQsJx_8BMbH6oDjaSPPEXqzNWchWrGSkhuTkSdemikkys1U22Ipd7MsRw0owWbw89V2fslIVAJ6G5lkyvYuQ%22,%22expirationTime%22:null,%22keys%22:{%22p256dh%22:%22BK0pktn50CMsTQtqwdPlKlJtdFs0LFeXX14T1zgoz6QWnvSTp5dxtChnUP5P1JX0TsjcopbdPKyN31HfABMUyic%22,%22auth%22:%22qbO_z0vGao9wD-E5g8VU-A%22}}
Run Code Online (Sandbox Code Playgroud)
它无法捕获请求并且控制不在函数内部。
如果我们改为将值传递给参数 subs:
%7B%22endpoint%22:%22https://def.abc.com/tyu/send/dX5q5eV7hFQ:APA91bHib-0QXrMzjatcvTR_uaIeeJK8lf6GmXUC9Jxv0Oxth-BzD4GmWnd4-YpDZv8qSFZ0eSg9mB2YkRvkc5ezdXW5KeaHjuQZfdyDxyBXjJgE-25Xbtlk37pdm8vfLk20k0k_VxW9%22,%22expirationTime%22:null,%22keys%22:%7B%22p256dh%22:%22BCCvcBLpRqp4u0auP688_MUJLsAiwWlQSn5kpyl8YVsEo_J-KpSdnhCmVIE_BhDXBcFYflPK52hqhYf3EaOCyuY%22,%22auth%22:%22iKuW_ESkCZnubWcQu_JK8w%22%7D%7D
Run Code Online (Sandbox Code Playgroud)
它工作正常。
为什么会这样?第一次编码有什么问题?
由于服务器无法处理请求,它返回 400。我需要捕获此类请求,然后通过正确编码来处理它们。什么是前进的道路?
我是 Spring Boot/Spring 和 Java 本身的新手。如果我能获得一些洞察力,那就太好了。
另外,我可以在这里在线解码它们,没有任何问题 - https://www.urldecoder.org/
编辑:基本上,有问题的请求通过{and}而不是%7Band %7D。
我的问题不是应用程序因 400 个错误请求而失败,而是如何在我的应用程序中捕获此类请求,正确编码它们然后处理它们。
spring-boot非常关注安全性。我想添加双引号/单引号或转义都行不通。
请访问: https: //www.rfc-editor.org/rfc/rfc1738
我认为你应该{尝试%7B手动编码}%7D
不安全:
由于多种原因,角色可能不安全。空格字符是不安全的,因为 当 URL 被转录、 排版或接受文字处理程序处理时
,重要的空格可能会消失,而无关紧要的空格可能会被引入。 字符“<”和“">”是不安全的,因为它们 在自由文本中用作 URL 周围的分隔符;在某些系统中,引号 (""") 用于 分隔 URL。字符“#”是不安全的,应始终进行编码,因为它在万维网和其他 系统中用于分隔 URL 与片段/锚点可能跟随它的标识符。字符“%”不安全,因为它用于 其他字符的编码。其他字符不安全,因为 已知网关和其他传输代理有时会修改 此类字符。这些字符是“{”、“} "、"|"、""、"^"、"~"、 "["、"]" 和 "`"。所有不安全字符必须始终编码在 URL 中。例如,即使在 通常不处理片段或锚标识符的系统
中,字符“#”也必须在 URL 中进行编码 ,因此,如果将 URL 复制到 使用它们的另一个系统中,则无需更改网址编码。
| 归档时间: |
|
| 查看次数: |
4933 次 |
| 最近记录: |