【问题标题】:How to stop cookie manipulation for HTML to JSP page redirection?如何停止 HTML 到 JSP 页面重定向的 cookie 操作?
【发布时间】:2020-04-20 23:02:54
【问题描述】:

我正在尝试将我的用户从 html 页面重定向到已使用 .war 文件部署在 tomcat/webapps 上的 jsp 页面。

在这样做的同时,我还通过 POST 方法将用户的会话信息作为隐藏参数发送。

burpsuite工具(安全测试工具)的帮助下,可以很容易地操纵cookie并更改登录用户的用户名。我如何才能阻止这种cookie操纵?

【问题讨论】:

  • 您无法控制/阻止客户端发送的内容。但是为什么浏览器为“用户名”cookie 发送的内容很重要呢?会话 cookie 应该只包含要使用的会话的 ID(它包含服务器端的所有信息)。
  • 我项目的安全测试团队提出了这个问题,当我们点击链接和页面重定向期间,他们能够更改用户名(使用他们的工具),这是产品的主要安全问题。
  • 为什么要将用户名保存在 cookie 中?用户名不应该是识别用户的唯一信息。通常您使用其他技术,例如会话或 JWT。这种方式要么没有信息存储在客户端/浏览器中,要么在不破坏存储数据的完整性(如使用加密签名)的情况下无法更改存储的数据。请edit您的问题包含您正在构建的系统的更详细描述,涉及重定向的位置/方式以及您在客户端/浏览器和服务器之间发送哪些cookie。
  • 嗨 Progman,我没有明确使用 cookie。有两个不同的应用程序部署在带有war文件的同一个tomcat/webapps上。
  • 从应用程序 A 的 HTML 页面,我重定向到应用程序 B 的 JSP 页面,并在 POST 请求中将用户名作为隐藏参数传递。示例代码如下:<form name="myForm" action="http://<ip address>:8081/applicationB/LandingPageController/home" method="post" id="formDT"> <input type="hidden" name="inputText" value="${user.name}" > <input type="submit" value="Got to B" id="pageb"> </form> 测试团队能够在页面重定向之间更改用户名参数。

标签: html session-cookies


【解决方案1】:

您无法控制/阻止浏览器/客户端发送的内容,因此不要将接收到的数据视为事实/真实。您的应用程序不应该只看用户名并说“哦,这是管理员用户,我显示整个管理区域”。

为防止篡改源自服务器的数据或至少检测更改,您可以使用加密或数字签名。使用加密数据,无法更改数据。您不知道如何解密数据并正确加密更改的数据,因为您没有加密密钥。使用签名数据,您仍然可以读取数据,但签名确保您可以检测到数据是否已更改。

在您的情况下,您可以使用 JWT 而不仅仅是用户名。 JWT 包含一个数字签名,用于检查数据是否已更改。您的“测试团队”可以更改数据,但您的服务器可以立即看到它已更改并拒绝接收(更改)的信息。

【讨论】:

    猜你喜欢
    • 2015-10-27
    • 1970-01-01
    • 2015-07-24
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多