我们的数据库有主键的整数。让我们假设一个用例,其中有代表管理分配给他们的不同客户。一种情况是代表可以更新客户联系信息。我们的页面按ID显示联系信息。当代表按下更新时,它将使用id进行更新。如果代表更改了ID,则会出现安全问题,他们可以查看并更新其他客户(可能未分配给他们)的联系信息。我相信这是一个常见的问题。
一种方法可能是在会话中保留密钥,加密id并使用该密钥在更新时解密。还有更好的方法吗?
此外,由于必须对各种页面进行同样的操作,我们可以在asp.net mvc中使用通用方法吗?
答案 0 :(得分:1)
如果您有分配给他们的客户的代表,我认为您将此信息以某种形式的访问控制列表存储在您的数据库中,对吗?
如果是这种情况,那么您应该在服务器上强制执行用户X有权查看/更改/删除客户Y.检查GET / Edit / Customer / 1和POST / Edit / Customer / 1上的权限你应该好好去。
由于您没有显示任何代码或数据库架构,我无法给您一个更具体的示例,但我希望我能解释一下。
答案 1 :(得分:0)
我猜你在查询字符串中显示ID,用户可以更改它。首先不要那样做。用户敏感信息绝不应作为纯文本在查询字符串中传递。您可以使用加密来加密ID,然后再检索它。