我正在开发使用数据库的 Web 应用程序。我必须做一些需要数据库表名和数据库表模式的操作。如果我将此类信息发送到客户端(通过 JSON 的 JavaScript)是否安全,或者我应该将这些信息保存在我的应用程序的服务器端?
可以显示数据库的表名吗?
信息安全
Web应用程序
应用安全
数据库
sql注入
朦胧
2021-08-18 22:22:25
4个回答
这样想
一方面,它没有任何问题。如果您的应用程序对SQL 注入足够安全,那么攻击者将无法使用该信息做很多事情。除非你命名你的表
table_2231
和列column_4231
(在这种情况下我讨厌你),否则猜你的表名并不难。如果它是一个新闻网站,很可能您会有一个名为 的表格articles
,或者如果您有一些订阅服务,您将有表格subscribers
或users
,依此类推。此外,如果您的服务器遭到入侵,攻击者几乎会立即找出表名。另一方面,如果有办法绕过它,则无需披露。如果您的安全得到照顾,那么在这种情况下,一层默默无闻就不会受到伤害。事实上,在良好的安全措施之上增加一层隐蔽性通常是一件好事。
但是,恐怕你正试图做这样的事情
SELECT * FROM $UNTRUSTED_INPUT WHERE blah = 1
在那种情况下,绝对不是。不要这样做。
公开表名可能会产生比您预期的更广泛的后果。例如,您可能会通过披露诸如deleted_messages
、profile_views
等表的名称而使您的公司处于法律不利地位single_female_users
。保留该数据和用户隐私突然成为一个讨论话题,并且可能会花费很多。
当然,你不能总是控制它。黑客也可以暴露您的表名。因此,最好的做法是创建表格,就像它们明天会公开一样,但不要泄露信息。
无论他在您的安全策略中的优先级如何,您暴露的信息越多,您就越容易受到攻击。
您可以将您的表格划分为敏感的和一般的。敏感表不应该是“公开的”,而是“别名的”。然而,从长远来看,您的解决方案的安全性取决于它对有兴趣加入的人的价值。
其它你可能感兴趣的问题