2

我的网站提供了通过网页和网络服务公开提供的极其敏感的信息(想想银行帐号)。客户可以在使用用户名和密码进行身份验证时修改这些信息。

任何能够成功修改数据库条目或修改网页上显示的信息的黑客入侵都将是灾难性的,因为帐号可能不正确,资金可能会被转移到恶意银行账户。

您对使此类服务尽可能健壮的架构有任何一般性建议吗?如果密码较弱,我将不承担任何责任,因此我主要担心的攻击会简单地绕过身份验证过程并修改数据库而不会在我这边触发任何警报;也可以是直接修改网页的html代码以显示不同的信息...

谢谢

4

2 回答 2

1

在这种情况下,我会确保尽可能地强化系统本身。这包括从安全角色到基于事务的数据库使用、日志记录以及预防各种攻击(如 SQL 注入、跨站点脚本)以及如果它是一个明智的系统使用证书和一般IP 检查(例如有一个 IP 白名单,允许向系统填充不会立即被拒绝的请求)。更不用说您的主机架构必须受到保护,无论您的系统内部实施了何种安全功能(关键词:防火墙、用户权限等)。在开发过程中,应该始终运行自动代码检查软件(如 Sonar)来检测逻辑错误和其他东西。

然后,拥有第二个系统来监控您的主要系统状态也是一个好主意。该系统应记录并通知您:

  • 对系统本身所做的更改(例如,如果有人可以访问您的业务逻辑,例如删除身份验证逻辑)

  • 对数据库所做的更改与您的主系统状态不一致。

  • 检测可疑行为:例如,银行有适用于您帐户的规则。就像您上次在欧洲境内付款,然后无中生有地向中国支付巨额款项一样,您会收到提交这笔付款的通知。除非客户的第二次承诺,否则不会触发付款。

最后,您已经正确地指出,您可以尽可能地强化它,但通常不会使其“100%”安全(至少在理论上),因此要在整个系统中拥有良好的安全性部分将包括蜂鸣能够检测到不需要的更改,识别已经进行的确切更改并获得有关系统整体状态的信息,以便在损坏状态已经发生的情况下允许回滚或手动更正。

即使在实施了上述技术之后,您也必须不断检查使用的框架、库和系统中的安全漏洞(例如使用自动尝试破坏您的系统的安全渗透框架)。

我想通过我的回答向您展示的是评论已经暗示的内容:这是一个非常广泛且复杂的主题,涉及多层安全问题,您必须自己研究或拥有“确保”您照顾好框架解决方案主题(如 Webframeworks 通常包含基本的 XSS 预防)。

于 2013-09-04T09:59:58.483 回答
0

不想听起来刺耳,但如果你必须在 Stack Overflow 上问这个问题,你就没有资格从事这个项目。

您的数据的财务价值听起来足以让攻击者花费大量资源来破坏您的防御 - 而这种破坏的后果将对您的组织及其客户造成灾难性的后果;这可能导致该组织不得不关闭。在这种情况下,您真的不想从互联网上的陌生人那里了解安全性。

开始学习的一个地方是已建立的财务信息管理标准,通常称为“ PCI 标准”;这些为处理支付细节的组织提供硬件、软件和流程指南。

有很多关于 IT 安全的书籍;我喜欢“Hacking Exposed”系列和“ Security Engineering ”。

您还可以聘请专业的 IT 安全顾问;我与这些人中的许多人一起工作过,他们中的许多人都非常擅长帮助您在解决方案中设计安全性。

于 2013-09-04T10:45:09.577 回答