向公众公开身份标识符的安全性

时间:2013-03-18 22:10:51

标签: sql sql-server asp.net-mvc security owasp

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

对于mvc app中的某些控制器操作,包含客户ID。我理解在get请求中,这会创建一个安全循环漏洞。它使外部机构能够获得有关数据库结构等的知识。

从使用客户ID转换为控制器操作中另一个更加模糊的字段会导致很大的困难。有没有其他方式以安全的方式公开id?我正在考虑将id映射到另一个id并将其存储在会话中,暴露这个替代id但不幸的是会话存储对我来说不可用。在某些情况下,暴露的id可能需要保持超过用户会话。我看到的另一种方法是将标识列上的种子增加到1以外的数字,假设随机数为88.这意味着暴露的id对外部用户意味着更少。

有关上述的任何想法或建议吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

如果您真的担心它,请确保它仅显示在授权操作上(需要用户登录)。但是,暴露主键没有任何固有的“不安全”。密钥在数据库的上下文之外没有任何意义,如果有人获得了对您的数据库的访问权限,那么他们知道特定客户的id就是 你的问题。