在银行网站上填写安全表格时,我一直想知道他们如何知道他们的申请是完全安全的。当然你知道你使用SSL,你的帐户“应该”是安全的,并且希望安全问题,帐户限制,超时等应该保证您的帐户安全。但测试这个的最佳方法是什么?什么决定了你的应用程序的“安全”程度?如果您的代码中存在某个错误,那么无论您有多少安全措施都无关紧要。
我最近创建了一个网站登录,该网站将在15分钟后自动将用户注销,在3次尝试失败后锁定其帐户,包含安全问题,并在SSL上运行。但我需要知道决定程序安全性的因素。
感谢您的帮助!
大都会
修改
主要问题是。 “测试PHP安全性的最佳方法是什么?”是否有采取措施来确保这一点。当然必须有。
答案 0 :(得分:7)
Web应用程序的安全验证标准为:OWASP ASVS。
它规定了您必须具备的所有流程的清单,以及在您可以申请一定级别的安全性之前必须验证的所有事实。我建议你去阅读详细的要求,了解所涉及的内容。 ASVS要求的一个示例是“验证是否定义了正验证模式并将其应用于所有输入。”
要求分为4个级别:
另一个可能遵循的标准是Microsoft Security Development Lifecycle (SDL)。这是他们用于自己产品的过程。 SDL更加面向流程,而且更通用。
答案 1 :(得分:4)
没有办法百分百肯定,不管你信不信,银行 实际上不时被打破,最近在丹麦这个政府发现了一个严重的漏洞“ NemID“(简易ID)即使告诉你它也没有注销你。
但是,尝试在屁股中捏这样的东西,试着自己打破它,像黑客一样思考,你的代码,那些可能让你进入的小怪癖和变通办法。
http://labs.securitycompass.com/index.php/exploit-me/有一堆资源可用于检查XSS,sqlinjection等,我强烈推荐The Web Application Hackers Handbook
此外,如果您非常重视您的安全性,请让外部知名顾问/公司审核您的代码。
......但在此之前,请考虑一下,你保护的重要性是什么,足以拔出核武器......或者是一把面包刀?
答案 2 :(得分:1)
但我需要知道是什么决定了 程序的安全性。
这是一个非常难以给出答案的问题。听起来你已经尽了一切力量保护你的应用程序。如果安全 对您很重要,那么聘请一家专门从事安全审计的公司可能是个好主意。
答案 3 :(得分:0)
您只谈论前端/用户可见的安全性。这只是一个方面,不要忘记后端安全性;服务器,数据库,php代码等
答案 4 :(得分:0)
虽然我并没有完全回答你的问题,但是让我给你一些关于“在3次尝试失败后锁定帐户”的做法,这很容易被滥用,是一种拒绝服务的形式。
即使这本身不是安全问题,但更多的是因为保护系统而引起的可用性问题,在考虑安全问题时应该考虑这个因素,而这些日子在我脑海中是因为我最近遇到过一些非常愚蠢的实现,特别是在电子银行应用程序中:
我的两家银行会在3次登录尝试失败后将您锁定。你会注意到我没有“在X时间内”的约束,因为没有。如果您今天输错密码,并且您在一个月前和8个月前再次输入密码,它会将您锁定。一旦您成功登录,它就不会重置。
将此政策强制您每月至少更改一次密码并严格要求使用6位数字密码,并且您有很多用户被阻止。至少他们会在通过电话验证您的身份后取消阻止,如果您认为自己知道密码,则可以重试。
另外一个人会在4次登录尝试失败后将您锁定。我不确定那里的时间限制因为它到目前为止只发生过一次。但是,他们无法在电话验证后解锁您的帐户,也无法亲自到银行本身。该政策是通过邮件向您发送新密码。 邮件,而不是电子邮件。我已经等了一个多星期了。
在我的情况下,所有这些都发生在我的行动之后,但如果他知道我的用户名,或者只是通过尝试随机的公众,那么有人可以轻易地把我锁起来。
我的观点是自动锁定非常普遍,但需要付出努力才能使攻击者成为威慑力,同时保持对合法用户的用户友好性。也许:
尝试3次失败后,询问用户是否忘记了密码并提供支持电话号码
如果失败的尝试太频繁或有任何机器人行为(坏的UA,加载页面后立即提交),请在登录表单上显示验证码。
当失败的尝试继续时,请在允许新尝试之前增加等待的时间。例如,在3次尝试失败后,要求用户在重试前等待30秒。另外2人失败了,等了2分钟。
如果您要锁定帐户,请在同一页面再次提供电话支持号码,以便沮丧的用户能够获得一些帮助。
还有其他想法吗?