1

考虑一个假设的银行应用程序,其中我们有帐户和一些管理员组。每个管理员都对某些帐户具有修改权限。为了保存对帐户所做的修改,应用程序在编辑页面上发送帐户 ID。管理员可以使用 fiddler 等工具更改发布请求。如果他/她将帐户 ID 更改为他/她未授权的某个帐户 ID。那么检测它的最佳方法是什么。

我应该使用什么策略来重新验证每条数据以进行回发授权?我更关心的是设计,而不是代码。

换句话说,现实世界的应用程序如何确保即使用户从任何工具更改回发请求,应用程序也能够检测到它。

4

2 回答 2

1

我是否应该在回发时重新验证每条数据以进行授权?

对,那是正确的。您应该从“所有输入都是邪恶的”理念开始,然后通过验证每个数据点来证明该陈述不正确。如果您的整个数据没有通过您的验证,那么您的输入确实是邪恶的。

智能 Web 应用程序同时使用客户端和服务器端验证。客户端验证可快速提醒用户有什么问题/遗漏,而无需进行服务器往返和服务器端验证,以确保即使有人“摆弄”客户端验证代码,错误数据也不会漏掉(并覆盖它)。

不幸的是,在客户端加密数据将不起作用,因为您在客户端(在 JS 代码中)也有密钥。这不会阻止恶意用户加密恶意负载。对于恶意攻击者来说,隐藏字段等混淆也是低效的。仅供参考,您甚至不需要 fiddler 更改字段/发布参数等 - 您所需要的只是一个firebug 扩展

口头禅是“验证服务器端的每一件事”。时期。

于 2012-07-04T05:53:29.200 回答
0

对于银行等关键应用程序,我将建议遵循安全步骤

1) 发送加密帐户 ID 2) 将该帐户 ID 保存在隐藏字段中,当用户发布数据时从隐藏字段中获取帐户 ID,而不是形成文本框或标签。3)在回发时重新验证每条数据以进行授权。

于 2012-07-04T05:36:18.623 回答