我的网站提供通过网页和网络服务公开提供的非常明智的信息(想想银行帐号)。客户可以在使用用户名和密码进行身份验证时修改这些信息。
任何成功修改数据库条目或修改网页上显示的信息的黑客入侵都将是灾难性的,因为帐号可能不正确,可能会将钱转移到恶意银行帐户。
对于能够尽可能提供强大服务的架构,您有什么一般性建议吗?如果密码不足,我不负责任,因此我主要担心的是攻击只会绕过身份验证过程并修改数据库而不会触发我的任何警报;它也可以是直接修改以显示不同信息的网页的html代码......
谢谢
答案 0 :(得分:1)
在这种情况下,我会确保尽可能地加强系统本身。这包括从安全角色到基于事务的数据库使用,记录以及防止各种攻击(例如SQL注入,一般跨站点脚本)以及可能是一个合理的系统使用证书和一般的安全角色的非常广泛的范围。 IP检查(例如,有一个白名单的IP,允许填充系统的请求,不会立即被拒绝)。更不用说您的主机架构必须受到保护,无论系统内部实施的安全功能如何(关键词:防火墙,用户权限等)。在开发过程中,应始终运行自动代码检查软件(如Sonar)来检测逻辑错误和内容。
然后,让第二个系统监控主系统状态也是一个很好的理想选择。该系统应记录并通知您:
对系统本身所做的更改(例如,如果某人有权访问您的业务逻辑并且例如删除了身份验证逻辑)
对数据库所做的更改与主系统状态不一致。
检测可疑操作:例如,银行有适用于您帐户的规则。就像你以前在欧洲境内支付最后一次付款一样,然后一劳永逸地付出巨额代价就可以说中国你会收到通知来支付这笔款项。除非客户第二次承诺,否则不会触发付款。
最后你已经正确地指出你可以尽可能地强化它,但通常不会使它“100%”安全(至少在理论上是这样)所以要有一个良好的安全级别是整个系统的一部分将包括能够检测到不需要的变化,识别已经发生的确切变化,并获得有关系统整体状态的信息,以便在已经发生的情况下允许回滚或手动校正腐败状态。
即使已经实现了上述技术,您也必须不断检查已使用的框架,库和系统中的安全漏洞(如使用自动尝试破坏系统的安全渗透框架)。
我想用答案向您展示的是评论已经提出的建议:这是一个非常广泛和复杂的主题,需要多层安全保护,您必须自己学习或拥有“确保”您的框架解决方案处理该主题(如Webframeworks通常包括基本的XSS预防)。
答案 1 :(得分:0)
不想听起来很苛刻,但如果你不得不在Stack Overflow上提出这个问题,你就没有资格参与这个项目。
您的数据的财务价值听起来足以让攻击者花费大量资源来破坏您的防御 - 而这种违规行为的后果对您的组织及其客户来说将是灾难性的;它可能导致组织不得不关闭。在这种情况下,你真的不想通过互联网了解陌生人的安全问题。
开始学习的一个地方是建立的财务信息管理标准,通常被称为“PCI standards”;这些为处理付款细节的组织提供了硬件,软件和流程的指南。
有很多关于IT安全的书籍;我喜欢“Hacking Exposed”系列和“Security Engineering”。
您也可以聘请专业的IT安全顾问;我和很多这些人一起工作过,他们中的很多人非常擅长帮助你将安全性设计到你的解决方案中。