一个完全安全的系统几乎是不可能的,因此安全专业人员经常使用的一种方法是平衡风险和可用性。如果用户提交的每个变量都需要两种生物识别验证(例如视网膜扫描和指纹),那么您将拥有极高的问责制水平。它还会花费半个小时才能填写一个相当复杂的表单,这往往会鼓励用户找到绕过安全措施的方法。
最佳的安全措施通常足够谨慎以满足需求,而不会阻止用户完成工作,也不会给代码作者带来过多的复杂性。事实上,一些安全攻击仅仅是利用这种过度构建的安全措施,而这种安全措施往往会随着时间的推移而逐渐减弱。
一句值得记住的话:一个系统的安全性仅与其最薄弱的环节一样好。如果所有交易都基于时间、位置、交易类型等进行大量记录,但用户仅基于单个 Cookie 进行验证,那么将用户与交易日志关联的有效性就会大大减弱。
在测试时,请记住,即使对于最简单的页面,您也无法测试所有可能性。您可能期望的输入与不满意的员工、有几个月时间的黑客或在键盘上走来走去的家猫提供的输入完全无关。这就是为什么最好从逻辑的角度来看代码,以辨别意外数据可以在哪里引入,然后跟踪它是如何被修改、缩减或放大的。
互联网上充斥着试图通过破坏您的代码、使您的网站崩溃、发布不当内容以及以其他方式让您的一天变得有趣来扬名的人。无论您的网站规模大小,只要您在线,只要拥有可以连接的服务器,您就是目标。许多破解程序不会根据大小进行区分,它们只是在寻找受害者的过程中扫描大量的 IP 块。尽量不要成为其中之一。