如何防止表单变量名称泄露数据库结构?

时间:2011-09-30 00:41:53

标签: php html forms security encryption

我正处于开发Web应用程序的早期阶段,并且我已经达到了我想要针对特定​​安全问题做出最佳选择的程度。目前,HTML表单中找到的所有字段都以它们所代表的数据库列命名。因此,例如,如果在数据库中我有一个名为“email”的字段,那么表单字段也将被称为“email”。这使我的通用代码更容易处理表单,但我自然会看到这些名称的一个主要问题:他们可以让潜在的黑客洞察我的数据库的结构,只是从查看源代码。 < / p>

我想到的主要解决方案涉及加密字段名称,以便客户端永远不会拥有真实的名称。服务器端密钥将用于进行加密。但是,我担心这种方法可能会使事情变得太复杂。例如:

  • 我可能会发现自己不得不更频繁地使用POST,因为加密文本可能比原始文本更长 - 当存在许多字段及其数据时,推动GET的限制。
  • 频繁加密/解密呼叫可能会导致性能问题。我还没有对此进行测试,因此最终可以忽略不计。
  • 非AJAX GET不能使用这种方法而不会显得神秘莫测。

所以,我想知道你们对此的看法。我是在过度思考,还是我走在正确的轨道上?有没有更好的方法来处理它?

顺便说一句,我也知道像“email”这样的字段名称并没有向开发人员提供太多信息(为什么不提供txtEmail,或类似的东西?)。我正在寻找一个可以采用的良好命名约定,因为它可能有助于解决上述问题。

1 个答案:

答案 0 :(得分:7)

如果任何人都可以通过SQL注入或任何其他方法访问您的数据库,则可以使用一个查询显示您的架构,因此尝试隐藏它是没有意义的。如果你觉得你必须通过默默无闻做到安全,那你就没有做其他事情。

如果您的应用程序是安全的,那么潜在的攻击者是否认为他们知道您的架构并不重要。他们对这些信息无能为力。

我花费更少的时间来模糊数据库(这只会让您和您的开发人员感到沮丧)以及更多时间尝试锁定您的应用程序以防止潜在的注入攻击。