保护医疗保健数据库

信息安全 sql注入 数据库 csrf 保护 卫生保健
2021-08-28 16:35:32

我正在做一个关于信息安全的小项目,我正在实施下面列出的技术来保护医疗保健数据库。

  • 防止 SQL 注入(使用准备好的语句、验证、使用标记化算法)
  • 防止 CSRF 攻击(在表单中插入隐藏的令牌)
  • 防止蛮力攻击(在 5 次不成功的尝试后锁定帐户)
  • 防止 XSS
  • 验证每个输入
  • 仅在 cookie 上启动会话
  • 实施否定数据库。(http://en.wikipedia.org/wiki/Negative_database
  • 加密机密信息
  • 每个用户的有限权限

编辑 我也在实施这些我之前没有发布的点,因为我认为它们不太重要。但这里的答案清楚地表明了以下几点的重要性:

  • 审核日志
  • 强密码
  • 使用 session_set_cookie_params 的安全连接
  • 访问控制

所以现在我的问题是——还有什么让我忘记了吗?我知道其中一些,例如网络层的安全性等。我在本地主机上运行我的项目,所以我认为我无法在网络层上做任何事情。

4个回答
  1. SSL 连接到服务器,因此没有人可以通过网络嗅探密码或数据。
  2. 不要忘记您的备份:它也应该被加密密钥应该独立存储,因此如果有人可以访问备份,他就无法使用数据。
  3. 根据您居住的国家/地区,可能会有健康数据保护的法律要求
  4. 管理访问权限:确保如果有人失去访问权限,帐户将被取消。
  5. 限制对某些 IP 地址的访问在理想情况下是本地网络。来自另一个大陆的人不太可能需要访问,所以不要害怕阻止整个国家。
  6. 阻止太简单的密码Password123 和类似的应该是不可能的!如果攻击者掌握了足够多的用户名,那么某人的密码就会很弱。使用多个 IP/僵尸网络,攻击者可以绕过您的蛮力保护。

我会添加细粒度的访问控制。您需要在数据库之上有一个层来控制谁可以访问哪些医疗记录。NIST在这里定义了细粒度访问控制的含义

一旦你有了它,你还需要一种技术来记录所有访问和所有信息检索,以便用户可以承担责任。

这两种技术都是实现数据隐私所必需的,这在医疗领域尤为重要。

看看 Privacy By Design网站,它也有一些很好的指导。

你有一份很好的清单,列出了保护和强化应用程序需要做的事情,它缺少的是报告。安全不仅关乎保护,还关乎管理。我会在您的列表中添加一个报告系统,它可以为您提供一些有关登录失败、尝试破解您的安全等的管理统计信息。

这里有很好的答案。

我想谈谈你提到的 4 点:

  • 加密机密信息
  • 每个用户的有限权限
  • 审核日志
  • 访问控制

我将它们分开查看,因为它们在您处理机密/个人数据(例如医疗保健相关数据)时特别重要。其他如 SQL 注入通常在应用程序层处理(例如使用 Web 应用程序防火墙)。

现在回到我们的 4 点,您将需要一个具有所有 4 个功能的综合数据库加密解决方案。

在像您这样的情况下,如果您使用的是开源 DBMS ,您可能需要查看基于列的加密解决方案,例如D'AmoMyDiamo 。在文件级别加密数据的所谓“透明加密解决方案”不会保护您免受物理窃取您的数据库硬盘的人的伤害,但如果您需要基于用户、应用程序、IP 的强大访问控制,它们几乎无用地址,一天中的时间等。

在这种情况下,基于列的另一个明显优势是您不必加密所有数据。您可以选择对包含敏感信息的特定列进行加密,并按列定义不同的策略以及 enc/dec 加密密钥。

密钥管理显然将成为本线程范围之外的另一个单独问题。

希望这可以帮助。

披露:我是上述产品的顾问。