gpt4 book ai didi

java - 在 JSP 中处理页面导航的最佳策略

转载 作者:行者123 更新时间:2023-12-04 06:22:51 25 4
gpt4 key购买 nike

我正在探索 JSP 来实现动态网页。要解决的一个问题是页面之间的导航。用户可以在浏览器中来回切换。

这是必须处理的。如果有人退出(例如),我们不希望其他人通过单击“返回”来检索 session 或数据。另一个例子是我们不想重新提交表单两次。

我正在寻找解决页面导航问题的技巧和建议。我想创建一个必须处理的问题列表+可能的解决方案:

问题:

  • 确保无法通过后退/前进点击检索/劫持 session
  • 确保表单没有提交两次
  • 确保用户不能篡改 cookie 或 URL 数据或隐藏字段来破坏控制流和安全性

  • 解决方案:
  • 实现一堆访问过的页面
  • 当页面被调用时,注册它显示的时刻以区分新请求和“返回”
  • 控制当前 session

  • P.S.:我见过这个 question ,但没有真正的答案。

    最佳答案

    Making sure sessions cannot be retrieved/hijacked with go back/forward clicks


    只是 disable browser cache那些页面。另见 Prevent user from seeing previously visited secured page after logout .

    Making sure forms and not submitted twice


    生成一个长的、唯一的、不可猜测的字符串,将它存储在 session ..
    String token = UUID.randomUUID().toString();
    ((Set<String>) session.getAttribute("tokens")).add(token);
    request.setAttribute("token", token);
    request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);
    .. 并作为表单的隐藏输入字段。
    <input type="hidden" name="token" value="${token}" />
    提交后,比较并删除 session 中的 key 。如果它在 session 中,则继续提交。
    if (((Set<String>) session.getAttribute("tokens")).remove(request.getParameter("token")) {
    // Valid token. Proceed with submit.
    } else {
    // Invalid token. Possible double submit.
    }

    Making sure users cannot fiddle cookies or URL data or hidden fields to break control flow and security


    只需编写健壮的代码 自己 或者使用现有的健壮的 MVC 框架,如 JSF2、Spring-MVC、Struts2 等。

    Solutions:

    • Implement a stack of visited pages
    • When a page is invoked, register the moment it is displayed to differentiate new requests from 'go back'
    • Control current session

    麻烦。

    关于java - 在 JSP 中处理页面导航的最佳策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6353245/

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