我正在为网站制作登录脚本,我需要一些方向。我担心它的安全性。
涉及到两件事,登录页面和登录类,我按照以下方式管理安全性。
login.php中的表单有一个令牌,当用户提交表单(目标为“php_self”)时,我调用该类并且:
你看到任何安全漏洞吗?
我找到了一个但不知道如何解决它。
如果失败尝试为“x”并且需要重新接收,则用户可以单击“登录页面”链接(不刷新),并找到没有重新接收的表单(因为尝试为0)。我可以创建一个Session变量“尝试“,但是这个可以和ajax一样强制,对吗?
提前感谢您的帮助
答案 0 :(得分:2)
我看到的一个安全问题是机器人正在创建随机邮件和密码并且一直登录。由于电子邮件每次都不同,你不知道它的机器人是否相同,它会使你的网络服务器忙碌让它变慢。
解决这个问题:
答案 1 :(得分:1)
这样的方案的最大问题是您阻止(或CAPTCHA)用户而不是IP地址。这会打开一个漏洞并且不会停止暴力破解:
请注意,阻止IP地址会带有一组自己的误报和误报。合法的代理服务器和僵尸网络意味着阻止IP地址可能会导致问题。它解决了90%的蛮力问题。
CAPTCHA也有自己的假阳性和假阴性。我知道我在阅读大量的ReCAPTCHA图像时遇到了麻烦,而且我看到机器人攻击我的系统解决了ReCAPTCHA的问题。除了对我的顾客产生的安慰剂效应外,我不再需要CAPTCHA了。
你说:
用户可以点击“登录页面”链接(不刷新),找到没有recaptcha的表单(尝试为0)
这是为什么?如果尝试计数存储在数据库中,为什么单击该链接会更改尝试计数?
尝试次数是否有自动超时? 成功登录会重置吗?
如果你实施了那个,暴力机器人甚至可能不会注意到基于会话的阻止。会话基于Cookie,除非您的登录表单需要会话中的内容,否则机器人甚至不会在登录后发送该cookie。即使是必需的,机器人也可以随时通过不发送cookie来获取新的,未阻止的会话cookie。