我创建了这个功能:
function blacklisted_ip() {
$('form').remove();
$('.wrapper').removeClass('form-success');
$(".login_text").html("Your IP has been blacklisted");
}
删除HTML表单 - 我删除表单以阻止使用黑名单IP登录的用户。
我在同一页面的顶部有一个php脚本,用于在发布表单时处理登录。
还有一种方法可以阻止其他页面发布到此页面吗?
php开始像这样:if($_POST) {
}
我考虑添加一个带有值的隐藏字段,但是后来认为有人能够查看源并只是复制它?
答案 0 :(得分:0)
最好的方法是使用 CSRF令牌。如果您使用任何框架,他们已经开箱即用,如果没有,如果您想自己实施,您可以这样做。
CSRF 代表跨站请求伪造,这是一种恶意网站,电子邮件,博客,即时消息或程序导致的攻击用户的Web浏览器,用于在当前对用户进行身份验证的受信任站点上执行不需要的操作。
参考:https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet
防止这种情况的解决方案是为每个表单的每个用户提供唯一的 CSRF 令牌。当用户打开页面并加载表单时,您将令牌/密钥分配给该页面(页面+表单),并将其保存在会话中,并以您选择的expairy进行。
将此令牌与表单一起添加为隐藏字段,并将其与其他数据一起发布,现在处理表单时比较从客户端收到的令牌以及你的会话令牌。如果他们匹配,他们将进行身份验证,如果没有,则不会处理该表单。
您可以使用任何方法生成 CSRF令牌,在您的情况下,对于每个页面+表单,它们只是唯一的键。