Xhr多个请求

时间:2017-11-18 16:30:19

标签: javascript xmlhttprequest

我编辑了我的任何旧问题

我已经写了这段代码。

<!DOCTYPE html>

<html>
<center><h1>csrf testing</h1    >
<form action="">
<input type="submit" onclick="" value="go">
</form>


<script>
var params = "email=nlkm&username=asc&csrf_token=&go=go"; 

 var xhr    =   new XMLHttpRequest();

 xhr.onreadystatechange = function(){
 if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200 ){

            var xhr2 = new  XMLHttpRequest();
            xhr2.open("POST", "useredit.php", false);
            xhr2.setRequestHeader("Content-Type", "x-www-form-urlencoded");
            xhr2.send(params);


            }           
 };
 xhr.open("GET", "useredit.php", false);
xhr.send(); 
</script>


</html>

现在,问题是当我的第二个请求启动时,响应与第一个请求的响应相同。困惑?好的,**我有一个提交一些参数和csrf令牌的表单。

现在在那个代码上,有两个请求**第一个,是用户编辑页面上的GET请求,第二个是POST请求,它提交用户编辑页面上的表单和表单的响应将在同一页面上生成。

现在,当我通过此代码提交表单而不提供csrf令牌时,响应与我对第一个请求的响应相同。 它应该回应令牌无效但它没有。

那么这里有什么问题?希望你现在明白了吗?

1 个答案:

答案 0 :(得分:0)

将引号放在查询字符串中。

$sql2 = "SELECT * FROM userinfo WHERE email ='".$_GET['userid']."'";

因此,如果$_GET['userid'] == "someuser@example.com",则$sql2的值为:

"SELECT * FROM userinfo WHERE email ='someuser@example.com'"

在输入值周围加上引号。

在您的版本中,值为:

"SELECT * FROM userinfo WHERE email =someuser@example.com"

这是无效的SQL。