保持Web服务器数据受保护的最佳实践

fab*_*osa 10 security protection medical

让我们说我经营一家医疗机构,想要一个网站,我的用户/患者可以查询他们的私人记录.针对最常见攻击的最佳解决方案是什么?

即使我使用在某处购买的私人服务器,并依赖其监控服务,也很有可能有人找到安全漏洞并窃取我的数据.我的生意结束了.

这种架构的最佳实践是什么?

jos*_*ley 14

首先,您需要确定要尝试和防范的攻击,然后逐个解决每个攻击.既然你提到"最常见的攻击",我们就会从那里开始; 这是一个常见的三层服务(client-web-datastore)的快速列表:

  1. 输入损坏(手动或模糊)
  2. SQL注入
  3. 跨站点脚本攻击(XSS)
  4. 猜测:蛮力,字典,彩虹表
  5. 现场(员工)泄密
  6. 社会工程学
  7. 人在这方面的中间人
  8. 跨站点伪造攻击(CSRF)
  9. 重播攻击

一旦泄漏或泄漏发生,这些是使攻击者更容易解决的一些问题,因此也应该解决:

  • 数据以纯文本格式存储
  • 弱密码/密钥
  • 弱加密或哈希
  • 没有盐腌
  • 没有服务分离(例如将数据库放在与Web服务器相同的物理盒上)

现在我们来看看常见的缓解措施:

1-3(输入,SQL注入,XSS)处理不良输入很多.因此,需要对来自客户端的所有输入进行清理,并且需要执行(以攻击为中心的)测试以确保代码正常工作.

4(猜测)自动化工具将用于尝试猜测用户的密码,或者如果他们已经拥有数据,他们将尝试强制使用密钥或哈希.缓解涉及为加密或散列选择正确的算法.增加密钥的位大小.实施密码/密钥复杂性的策略.用盐.限制每秒的尝试次数.等等

5(泄漏)如果数据是现场加密的,并且管理员/员工/门卫没有密钥来解密数据,那么泄漏信息的价值有限(特别是如果正确处理#4).您还可以限制访问数据的人员和方式(NSA刚刚在这里学到了宝贵的一课,并且正在制定政策以确保两个人需要在场才能访问私人数据).正确的日志记录和访问尝试记录也很重要.

6(社交工程)攻击者将尝试致电您的支持服务台,冒充客户端,并请求访问特权信息或让支持服务台更改信息(密码,个人信息等).他们通常会将多个支持呼叫链接在一起,直到拥有控制帐户所需的所有信息.需要对支持进行培训,并限制他们将提供哪些信息,以及他们可以编辑哪些数据.

7(中间人)这是攻击者试图将自己注入到通信流中的地方,最常见的是通过使用在客户机上运行的rootkit或假接入点(例如,wifi).基于线路/协议的加密(例如SSL)显然是第一级保护.但是变体(例如浏览器中的人)将不会被缓解,因为他们将在SSL数据包被解密后看到数据.通常,客户端不可信任,因为平台本身是不安全的.鼓励用户使用专用/隔离机器是一种很好的做法.限制密钥和解密数据存储在内存或其他可访问位置的时间.

8-9(CSRF和重播)类似于中间人,这些攻击将尝试复制(例如捕获)用户的凭证和/或事务并重用它们.针对客户端来源进行身份验证,在凭据有效时限制窗口,要求验证事务(通过单独的通道,如电子邮件,电话,短信等)都有助于减少这些攻击.



适当的加密/散列/腌制可能是公司搞砸的第一件事.假设你所有的其他防守都下降了(就像你说的那样,他们可能会这样),这是你最后的希望.在这里投资并确保正确完成.确保使用不同的密钥(而不是一个主密钥)对单个用户记录进行编码.让客户端进行加密/解密可以解决许多安全问题,因为服务器永远不会知道密钥(因此没有人可以窃取它们).另一方面,如果客户端丢失密钥,那么他们也将丢失其数据.因此必须在那里进行权衡.

投资测试/攻击您的解决方案.实现网站/数据库的工程师通常无法考虑所有可能的攻击情形.