Silverstripe:禁用特定IP的CSRF

时间:2016-09-12 06:04:42

标签: silverstripe

我想在我的Silverstripe上为特定IP禁用CSRF安全令牌。

我知道特殊形式可以通过

完成
$form = new Form(..);
$form->disableSecurityToken();

但我想在网站上做到这一点。

我在另一台计算机上托管了另一个网站,该网站使用XSLTajax进行了avers调用silverstripe登录。所以我想为这个特定的IP禁用站点CSRF。

任何人都可以帮我吗? 感谢

1 个答案:

答案 0 :(得分:5)

您可以查看$_SERVER以获取远程IP:

$ip = '192.168.1.99'; 

if ($_SERVER['REMOTE_ADDR'] == $ip) {
    $form->disableSecurityToken();
}

如果ajax调用由其他服务器发出,如果浏览器发出IP总是不同的话,这可能会有效。

编辑:

如果要全局禁用安全令牌,可以使用

SecurityToken::disable();

或使用返回false的魔术方法ExtensionController类插入securityTokenEnabled()。当然,特殊的控制器子类可以覆盖它。请参阅source