gpt4 book ai didi

jsp - 如何禁用对 JSP 页面的 GET 请求?

转载 作者:行者123 更新时间:2023-12-04 11:31:19 26 4
gpt4 key购买 nike

我正在修复一些旧的缺陷,作为一个缺陷的一部分,我需要确保某些请求只是 POST 到 JSP 页面而不是 GET 请求。应用程序有一个表单将数据提交到另一个 JSP 页面(我知道它是错误的并且不利于 MVC 但修复它为时已晚),因为它是一个 JSP 页面,所以我们可以 POST 请求,否则我们可以 GET 请求。在恶意用户的情况下,可以读取表单并将请求作为来自浏览器的 GET 发送,例如 http://host:80/somejsp.jsp?param=value&param=value等等。在这种情况下,它成为一种违规行为。我需要确保不处理此类 GET 请求。一种方法是在jsp页面中执行以下步骤 -

if (request.getMethod().equals("GET")) {
// reroute the user as it is not a valid req
}

有没有其他方法可以做到?

最佳答案

两种解决方案:

  • 添加 <security-constraint>带空 <auth-constraint><url-pattern> 上的 *.jsp<http-method>GET这将阻止 GET对每个人的 JSP 文件请求(如 McDowell 所建议的):
    <security-constraint>
    <display-name>Restrict GET requests on JSP files</display-name>
    <web-resource-collection>
    <web-resource-name>JSP files</web-resource-name>
    <url-pattern>*.jsp</url-pattern>
    <http-method>GET</http-method>
    </web-resource-collection>
    <auth-constraint />
    </security-constraint>
  • 创建一个 Filter监听 <url-pattern>*.jsp并在 doFilter() 中基本上执行以下操作方法。
    if (((HttpServletRequest) request).getMethod().equals("GET")) {
    ((HttpServletResponse) response).sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
    } else {
    chain.doFilter(request, response);
    }

  • 无需在所有 JSP 页面上复制粘贴相同的内容,否则只会出现 IllegalStateException: response already committed错误。

    关于jsp - 如何禁用对 JSP 页面的 GET 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3038890/

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