4

我正在使用一个将数据保存在 sql server 数据库中的 asp.net mvc 应用程序。它有一个客户表,显然将客户存储在系统上。客户的 id 是一个身份列,其中包含客户的唯一标识符,每个新记录都会自动递增 1。

对于 mvc 应用程序中的某些控制器操作,包括客户 ID。我理解在获取请求中,这会产生一个安全漏洞。它使外部机构能够获得有关数据库结构等的知识。

在控制器操作中从使用客户 ID 更改为另一个更模糊的字段会造成很大的困难。有没有其他方法可以安全地暴露 id?我正在考虑将 id 映射到另一个 id 并将其存储在 session 中,公开这个替代 id 但不幸的是 session 存储对我不可用。在某些情况下,暴露的 id 可能需要在用户会话之后维护。我看到的另一种方法是将标识列上的种子增加到 1 以外的数字,比如说随机数 88。这意味着暴露的 id 对外部用户的意义较小。

对以上内容有什么想法或建议吗?

4

2 回答 2

0

如果您真的担心它,只需确保它仅显示在授权操作上(需要用户登录)。不过,公开主键本身并没有什么“不安全”的地方。密钥在数据库上下文之外没有任何意义,如果有人获得了对您数据库的访问权限,那么他们知道特定客户的 id 是您最不关心的问题。

于 2013-03-19T03:33:58.967 回答
0

如果我的理解正确,映射到另一个像 Guid 这样的 id 并传递 Guid 应该可以正常工作。您不需要在会话中“存储”CustomerId。您可以在再次需要时使用 Guid 来调用 CustomerId。

于 2013-03-18T23:45:48.143 回答