4

我有一个使用 CodeIgniter 2 构建的 Web 应用程序,我在其中启用了 CSRF 保护。$config['csrf_protection'] = TRUE;我的朋友正在为此创建移动应用程序,因此他需要 API 来与 Web App 进行通信。我使用本教程在 CI 中创建了 RESTful API 。移动应用程序发出的所有请求都是POST请求。我面临的问题是,由于启用了 CSRF 保护,并且从移动设备发出的 POST 请求不携带任何“CSRF 令牌”,因此它正在抛出500 internal server error。但是,如果我禁用CSRF 保护一切正常。实施它的正确方法是什么?我应该在手机本身上生成令牌吗?或者我应该为 CSRF 保护添加例外吗?如果是这样,那我该怎么做呢?因为我不想禁用 CSRF 保护。

4

1 回答 1

7

net.tutsplus.com 查看 codeigniter 中 CSRF 的实现。

我希望这能解决你的问题。如果你实现正确而不是在你的 config.php 里面写这个

if (isset($_SERVER["REQUEST_URI"])) 
{
    if(stripos($_SERVER["REQUEST_URI"],'/mypage') === FALSE)
    {
        $config['csrf_protection'] = TRUE;
    }
    else
    {
        $config['csrf_protection'] = FALSE;
    } 
} 
else 
{
    $config['csrf_protection'] = TRUE;
} 
于 2013-07-06T08:10:16.623 回答