gpt4 book ai didi

java - Referer header 中的 URL 被检测为使用多种编码

转载 作者:行者123 更新时间:2023-11-30 01:52:21 25 4
gpt4 key购买 nike

使用 owasp.esapi 来过滤传入的请求参数和 header ,我遇到了一个问题,显然 Referer header 包含一个被视为使用“多重编码”的值。

一个例子:

http://123.abc.xx/xyz/input.xhtml?server=http%3A%2F%2F123.abc.xx%3A7016%2Fxyz&o=1&language=en&t=a074faf3

但对我来说,该 URL 似乎已正确编码,并且对其进行解码会产生完全可读且正确的 URL。

那么,谁能解释一下这里的问题以及如何处理这个问题?

在 header 值上运行此方法时,ESAPI 报告错误:

value = ESAPI.encoder().canonicalize(value);

输出:

 SEVERE: [SECURITY FAILURE] INTRUSION - Mixed encoding (2x) detected

最佳答案

事实上是的。我在即将发布的 ESAPI 版本中修复了此错误,但需要更改 API,根据您此处的数据,可能可能存在错误。

简而言之,在我修复之前,ESAPI 只是针对 URI 执行了正则表达式。问题和大量关于此的错误报告是 URI 不是常规语言。它们本身就是一种语言。因此,会发生的情况是,所讨论的 URI 将具有包含 HTML 实体的参数,只是一些随机数据变体将与已知的 HTML 实体对齐,例如 &param=foo ,它将被解释为实体 这是段落。还有一些关于 ASCII 与 Unicode(非 bmp 编码)的问题。

无论如何,我们的下一个库的候选版本中将使用一种新方法,Encoder.getCanonicalizedURI();

这对于正则表达式来说是安全的,因为它将被分解并检查混合/多重编码。您当前使用的方法现已弃用。

关于java - Referer header 中的 URL 被检测为使用多种编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55651571/

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