我正处于开发Web应用程序的早期阶段,并且我已经达到了我想要针对特定安全问题做出最佳选择的程度。目前,HTML表单中找到的所有字段都以它们所代表的数据库列命名。因此,例如,如果在数据库中我有一个名为“email”的字段,那么表单字段也将被称为“email”。这使我的通用代码更容易处理表单,但我自然会看到这些名称的一个主要问题:他们可以让潜在的黑客洞察我的数据库的结构,只是从查看源代码。 < / p>
我想到的主要解决方案涉及加密字段名称,以便客户端永远不会拥有真实的名称。服务器端密钥将用于进行加密。但是,我担心这种方法可能会使事情变得太复杂。例如:
所以,我想知道你们对此的看法。我是在过度思考,还是我走在正确的轨道上?有没有更好的方法来处理它?
顺便说一句,我也知道像“email”这样的字段名称并没有向开发人员提供太多信息(为什么不提供txtEmail,或类似的东西?)。我正在寻找一个可以采用的良好命名约定,因为它可能有助于解决上述问题。
答案 0 :(得分:7)
如果任何人都可以通过SQL注入或任何其他方法访问您的数据库,则可以使用一个查询显示您的架构,因此尝试隐藏它是没有意义的。如果你觉得你必须通过默默无闻做到安全,那你就没有做其他事情。
如果您的应用程序是安全的,那么潜在的攻击者是否认为他们知道您的架构并不重要。他们对这些信息无能为力。
我花费更少的时间来模糊数据库(这只会让您和您的开发人员感到沮丧)以及更多时间尝试锁定您的应用程序以防止潜在的注入攻击。