如何保护数据库?

3

有一个带有服务器数据库的网站。我正在构建一个桌面应用程序,该应用程序使用其中一张表中的数据。黑客可以从程序集中轻易地获取密码。

如何保护数据库?

4个回答

14

我不会在应用程序中存储数据库信息。相反,我会在网站上创建一个与数据库连接的API,可以实现RESTful接口或查询以适当的格式返回数据,例如JSON、XML甚至纯文本。然后应用程序可以调用这些Web服务并处理结果。所有数据库信息都留在服务器上,这样就更安全了。


所有的垃圾怎么能保护数据库呢?必要的是:适当的访问控制,丰富的完整性约束和视图用于细粒度安全(基于能力的安全)。我只能想到一个原因来隔离DBMS实现:它很糟糕,可以通过调整其通信协议来欺骗它。但即使在这种情况下,我也不知道冗余的文本协议可以做出什么贡献,因为网络可能是瓶颈。 - MaD70
这个“垃圾桶”可以保护数据库,因为你可以限制用户对内容的访问而不会危及安全性。在所有情况下,这可能不是最佳解决方案,但肯定是我会考虑的一个方案。 - Thomas Owens
我感到困惑。你读了我的评论吗?除了第一句话,还有其他的内容吗? - MaD70
其余部分是不正确的。很多人都会对他们的数据库进行沙盒隔离,这也是正确的做法。 - Thomas Owens
其余的内容(访问控制、完整性约束、基于能力的安全性视图)涉及“语义安全”,与“很多人”现在认为的相反,这些内容是绝对相关的。 - MaD70
显示剩余2条评论

1

API 添加了有时不必要的应用层。并非所有我参与的应用程序都能轻松地从使用数据库调用转换为 Web 服务调用。如果应用程序尚未编写,那么我想这并不重要。

我的替代实现方式是:

  1. 使用某种安全隧道连接到服务器。
  2. 将密码加密保存在磁盘上。

这将节省我创建 API 的工作量,在我大多数项目中都是浪费时间的。

如果您想将应用程序分发给客户,则此替代方案不可行。


1

你可以:

A)创建一个三层系统。您的客户端可以与服务器接口,服务器再与数据库接口。服务器存储访问凭据。

B)为您的用户在数据库上创建个人账户。如果需要对数据进行细粒度访问控制,则此双层模型适用。例如,在具有不同用户角色的内部应用程序中。


0

不要让数据库用户登录应用程序并执行除应用程序数据以外的任何写操作或读操作。

或者,选择一个明智的架构,就像Thomas上面提到的那样。数据库用于存储和检索数据,它们不是通用的应用程序服务器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接