ajax传值令牌不起作用,当使用AJAX提交表单时,CSRF令牌不起作用

我有一个CSRF预防的简单标记,它在不使用AJAX提交时按预期工作。但是当使用AJAX时,它会一直显示我创建的自定义错误。当使用AJAX提交表单时,CSRF令牌不起作用

这是我生成令牌功能:

function make_form_token() {

$token = base64_encode(openssl_random_pseudo_bytes(32));

$_SESSION['token'] = $token;

return $token;

} // end CSRF token generation

的功能,然后调用名为隐藏字段form_token

Send Enquiry

然后Ajax调用从PHP脚本接触提交。 PHP

$(document).ready(function(){

$("#send").click(function(){

$("#send").prop("disabled", true);

$(".hideloader").show();

$("#send").html("Sending ajax-loader.gif");

var form_data = $("#contact-form").serialize();

$.ajax({

type: 'POST',

url: 'contact-submit.php',

data: form_data

}).done(function(response) {

$("#server-results").hide().html(response).fadeIn("slow");

$("#send").prop("disabled", false);

$("#send").html("Send Enquiry");

});

});

});

接触submit.php

if ($_SERVER["REQUEST_METHOD"] == "POST") {

$message = "";

if (!isset($_SESSION['token']) || $_POST['form_token'] !== $_SESSION['token']) {

$message .= "There was an error submitting the form. Please try again later.
";

}

if ($message) {

echo "

There were errors in your form:
" . $message . "
";

} else {

// send email etc.

}

}

2017-04-17

Jonathan

+0

你能的var_dump $ _ POST [ 'form_token']和$ _SESSION [ '令牌']?他们是一样的吗? –

+0

当尝试的var_dump我得到这个: 注意:未定义的变量:/应用程序/ MAMP/htdocs中/上线11 空字符串_SESSION(44) “HBFYoXNsHS9WsBc7vds/MukXr0CR8pBFPc7WGi3JPvY =” –

+1

是您的会议开始时,POST请求到达服务器? –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值