假设我有文件login.php
.
login.php
获取(或发布)参数用户名和密码,如果登录成功则返回 true,否则返回 false。这样其他页面可以通过ajax访问它。
我的问题是,由于这种方法容易受到暴力攻击,我应该如何保护它。我正在考虑让它拒绝访问,除非它来自我自己网站的表单,但你会怎么做呢?
我使用 jquery 进行 ajax 调用。
假设我有文件login.php
.
login.php
获取(或发布)参数用户名和密码,如果登录成功则返回 true,否则返回 false。这样其他页面可以通过ajax访问它。
我的问题是,由于这种方法容易受到暴力攻击,我应该如何保护它。我正在考虑让它拒绝访问,除非它来自我自己网站的表单,但你会怎么做呢?
我使用 jquery 进行 ajax 调用。
我正在考虑让它拒绝访问,除非它来自我自己网站的表单......但是你会怎么做
不可能可靠地实现这一点。您可以使用某种验证码、限制请求、配置防火墙以丢弃来自同一 IP 的多个连续请求,这将使攻击者的工作更加困难。
在来自同一 IP 的 3 个请求后,只需将服务器的每个响应延迟 2 秒。
不要使用会话或任何客户端机制。只需使用存储 IP 和号码或身份验证失败的登录请求的临时表,您可以使用该表来增加时间。15 分钟后没有从 ip 进行身份验证尝试,刷新其条目。
有了这个,蛮力对于坏人来说可能是一个“小”棘手可能有几年的时间尝试访问您的网站),它保留了像我这样可能需要重新输入他的密码 4 或 5 的诵读困难的可用性时间前的好人没有错误^^
蛮力比你想象的要难得多。如果一个人使用了错误的密码,那是他们的问题。如果攻击者每秒可以进行数百万次尝试,即使是弱密码(8 个字符)也需要 2 年的暴力破解。你有很多选择:
我会做以下事情: 要求 10 个字符或更多的密码。如果它们不够强大,或者基于字典单词(但仍然允许它们),请尖叫。登录请求过多时登录并尽快亲自调查。
所有这些都发生在服务器端,与 AJAX 无关。