可以显示数据库的表名吗?

信息安全 Web应用程序 应用安全 数据库 sql注入 朦胧
2021-08-18 22:22:25

我正在开发使用数据库的 Web 应用程序。我必须做一些需要数据库表名和数据库表模式的操作。如果我将此类信息发送到客户端(通过 JSON 的 JavaScript)是否安全,或者我应该将这些信息保存在我的应用程序的服务器端?

4个回答

这样想

  • 一方面,它没有任何问题。如果您的应用程序对SQL 注入足够安全,那么攻击者将无法使用该信息做很多事情。除非你命名你的表table_2231和列column_4231(在这种情况下我讨厌你),否则猜你的表名并不难。如果它是一个新闻网站,很可能您会有一个名为 的表格articles,或者如果您有一些订阅服务,您将有表格subscribersusers,依此类推。此外,如果您的服务器遭到入侵,攻击者几乎会立即找出表名。

  • 另一方面,如果有办法绕过它,则无需披露。如果您的安全得到照顾,那么在这种情况下,一层默默无闻就不会受到伤害。事实上,在良好的安全措施之上增加一层隐蔽性通常是一件好事。

但是,恐怕你正试图做这样的事情

SELECT * FROM $UNTRUSTED_INPUT WHERE blah = 1

在那种情况下,绝对不是不要这样做。

公开表名可能会产生比您预期的更广泛的后果。例如,您可能会通过披露诸如deleted_messagesprofile_views等表的名称而使您的公司处于法律不利地位single_female_users。保留该数据和用户隐私突然成为一个讨论话题,并且可能会花费很多。

当然,你不能总是控制它。黑客也可以暴露您的表名。因此,最好的做法是创建表格,就像它们明天会公开一样,但不要泄露信息。  

无论他在您的安全策略中的优先级如何,您暴露的信息越多,您就越容易受到攻击。

您可以将您的表格划分为敏感的和一般的。敏感表不应该是“公开的”,而是“别名的”。然而,从长远来看,您的解决方案的安全性取决于它对有兴趣加入的人的价值。