阻止从其他页面提交表单

时间:2016-07-13 07:26:36

标签: php jquery html

我创建了这个功能:

function blacklisted_ip() {
    $('form').remove();
    $('.wrapper').removeClass('form-success');
    $(".login_text").html("Your IP has been blacklisted");
}

删除HTML表单 - 我删除表单以阻止使用黑名单IP登录的用户。

我在同一页面的顶部有一个php脚本,用于在发布表单时处理登录。

还有一种方法可以阻止其他页面发布到此页面吗?

php开始像这样:

if($_POST) {

}

我考虑添加一个带有值的隐藏字段,但是后来认为有人能够查看源并只是复制它?

1 个答案:

答案 0 :(得分:0)

最好的方法是使用 CSRF令牌。如果您使用任何框架,他们已经开箱即用,如果没有,如果您想自己实施,您可以这样做。

CSRF 代表跨站请求伪造,这是一种恶意网站,电子邮件,博客,即时消息或程序导致的攻击用户的Web浏览器,用于在当前对用户进行身份验证的受信任站点上执行不需要的操作。

参考:https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet

防止这种情况的解决方案是为每个表单的每个用户提供唯一的 CSRF 令牌。当用户打开页面并加载表单时,您将令牌/密钥分配给该页面(页面+表单),并将其保存在会话中,并以您选择的expairy进行。

将此令牌与表单一起添加为隐藏字段,并将其与其他数据一起发布,现在处理表单时比较从客户端收到的令牌以及你的会话令牌。如果他们匹配,他们将进行身份验证,如果没有,则不会处理该表单。

您可以使用任何方法生成 CSRF令牌,在您的情况下,对于每个页面+表单,它们只是唯一的