【发布时间】:2019-12-15 23:08:10
【问题描述】:
在我的 approute /edit RequestMethod.GET
我将值 customerId 放入模型中 model.addAttribute("customerId",customerId);
然后视图(form method="POST")将数据发送到approute /edit RequestMethod.POST
我在 post approute 中需要 customerId,因此在表单中我有一个 customerId 的隐藏输入。我发现我什至不需要隐藏输入。 (实际上,如果我使用隐藏输入,它会被忽略。POST approute 将获取我从 GET approute 传递给视图的原始 customerId)
假设用户有权编辑 customerId 36 但没有 customerId 45。customerId 36 被发送到视图。黑客是否可以将 customerId 更改为 45 并编辑他无权编辑的内容,或者我可以确保 customerId 仍然是 36?当我使用隐藏输入时,我在 post approute 中进行了检查,以检查用户是否有权编辑该客户。现在我不确定是否有必要。
如果我没有将它作为隐藏输入,我基本上不知道 post approute 从哪里获取 customerId。它已加载到模型中,因此模型是否存在于服务器端并且它是安全的,还是 customerId 从用户那里收到并且他可以操纵它?
【问题讨论】:
-
你所说的“黑客”是什么意思? smb谁能拦截和修改前后端的通信?或者 smb 攻击了您的服务器并访问了您的应用程序和数据库?或谁可以访问前端代码,例如正常访问前端并尝试对数据进行一些恶意操作的普通用户?
-
您似乎需要意识到 Spring 被无数不同的项目以无数不同的方式使用。什么是“approute”?为什么您需要进行 GET 以获得您需要然后 POST 的视图?详细说明您正在使用的技术。
-
您需要首先了解 HTTP 在基本级别(请求和响应)上的工作原理,然后应用可以编写自定义 HTTP 客户端向您发送任何东西的规则而且你永远不能相信客户的意见。
标签: java spring parameters model