gpt4 book ai didi

java - 如何解决java中的开放重定向问题

转载 作者:行者123 更新时间:2023-11-30 02:28:16 24 4
gpt4 key购买 nike

目前我的java代码使用

response.sendRedirect(request.getRequestUrl().toString());

这是一个开放的重定向。

我必须解决这个问题,但我无法将其列入白名单,因为有太多的 URL 与其关联。

我已经使用 ESAPI 尝试了以下解决方案,但它对我不起作用。

ESAPI.httpUtilities().setCurrentHTTP(req, resp);
ESAPI.httpUtilities().sendRedirect(location);
ESAPI.httpUtilities().clearCurrent();

我是 ESAPI 新手。

最佳答案

[免责声明]

我是 ESAPI 项目的联合负责人。

I have to fix this but I can not white list it since there are too many URL's are associated with it.

本质上,“我必须解决问题,但我限制自己采用最简单的解决方案。”

Here are the best practices enumerated by @jww:

  1. 只需避免使用重定向和转发即可。

  2. 如果使用,则不允许 URL 作为目标的用户输入。这通常是可以做到的。在这种情况下,您应该有一个方法来验证 URL。

  3. 如果无法避免用户输入,请确保提供的值有效、适合应用程序并且已获得用户授权。

  4. 建议将任何此类目标输入映射到一个值,而不是实际的 URL 或 URL 的一部分,并且服务器端代码将此值转换为目标 URL。

    <
  5. 通过创建可信 URL 列表(主机列表或正则表达式)来清理输入。

  6. 强制所有重定向首先经过一个页面,通知用户他们将离开您的网站,然后让他们点击链接进行确认。

这些实际上是您可用的所有解决方案。有些 Web 框架可以让您轻松实现这一点,例如带有 Spring Security 的 Spring MVC。

这些行:

 ESAPI.httpUtilities().setCurrentHTTP(req, resp);
ESAPI.httpUtilities().sendRedirect(location);
ESAPI.httpUtilities().clearCurrent();

不起作用,因为您必须在执行重定向之前检查用户输入。

关于java - 如何解决java中的开放重定向问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44986069/

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