1个会话令牌是否足以支持多个Ajax请求?

时间:2014-03-07 16:53:09

标签: jquery ajax csrf

我今天有一个安全问题。我使用jQuery将Ajax实现到我的应用程序中。我实际上是在每个页面加载时生成一个令牌,该令牌将被设置为$_SESSION,并且它将被发送到$.ajax()请求。在服务器端,我要验证发送的$_POST令牌是否等于$_SESSION令牌。

这是html部分:

<html>
<head>
    <script src="js/jquery-1.10.min.js"></script>

    $(document).ready(function(){
        "use strict";

        <?php            
            $token = md5(rand(5000,500000));
            $_SESSION['token'] = $token;
        ?>


        SomeFunction.init("<?php echo $token; ?>");
    });
    </script>
</head>

<body></body>

</html>

因此,这将基本上设置页面加载的$ token eac htime。但是,如果我的页面确实有多个Ajax请求怎么办?或者只是一个,这没关系。如果当前用户知道令牌(通过查看源代码),那么他可以用它发送格式错误的请求,如果他在此期间没有重新加载页面。

基本上,只要他愿意,他就会拥有令牌,他可以根据需要发送尽可能多的格式错误的Ajax请求。

如何防御这类攻击?我应该在每个Ajax请求上重新生成令牌吗?如果没有重新加载页面,这怎么可能呢?应该为每个Ajax请求返回一个新的标记值?或者最佳做法是什么?

0 个答案:

没有答案