使用CodeIgniter CSRF保护为Web应用程序创建API

时间:2013-07-06 08:02:59

标签: php api codeigniter restful-authentication

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

1 个答案:

答案 0 :(得分:6)

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;
}