我想知道是否有人知道以下情况是否会发生。
假设我动态生成了一个表单,其中包含特定于该客户的产品的复选框。如果客户选中该复选框,则表格发布后,产品将被删除。这些复选框以产品 ID 命名。
现在我的处理程序将检查response.form并解析出productID,然后根据productID从数据库中删除产品。
是否有人可以通过在帖子中添加虚假复选框名称来修改帖子以允许删除其他产品 ID,甚至可能删除产品表中的所有内容?
如果是这样,在删除之前很容易检查产品ID是否与经过身份验证的用户相关,并且他们有足够的角色来删除,或者生成一个随机数并用它而不是他们的产品ID来标记复选框,但是我现在不这样做。任何对此最佳实践的指导都会很好。
我以前从未考虑过这一点,并且想知道有多少人实际上默认这样做,或者是否有一百万个网站存在漏洞?
谢谢
最佳答案
某人绝对有可能使用任何键/值对(包括产品 ID 值)构建自定义 POST 请求并将其提交到您的应用程序。从安全角度来看,复选框不在 POST 应该来自的表单上这一事实是无关紧要的。
在考虑 Web 应用程序安全性时,客户端是一个完全不受信任的实体。您必须假设您的 JavaScript 验证将被绕过,您的 SELECT 元素可以被更改以包含攻击者想要的任何值,等等。
所以,是的,您应该验证当前用户是否有权删除提交给此处理程序的任何产品 ID。
我不一定相信您需要走随机数混淆路线。这是一个额外的安全层,这很好,但如果您执行正确的授权,我认为没有必要。
我的 0.02 美元
关于security - HTTP POST 容易改变吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5914695/