2016-09-12 3 views
0

특정 IP에 대해 실버 스트라이프에서 CSRF 보안 토큰을 비활성화하려고합니다. 내가 아는Silverstripe : 특정 IP에 대해 CSRF를 비활성화하십시오.

는 특정 양식 그것은

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

를 통해 수행 할 수 있습니다하지만 현명한에게 사이트를하고 싶어.

나는 다른 사이트에서 XSLTajax을 사용하여 실버 스트라이프 로그인에 대한 ajax 전화를 걸고 있습니다. 따라서이 특정 IP에 대해 CSRF를 계속 비활성화하고 싶습니다.

누구나 나를 도울 수 있습니까 ?? 감사

답변

5

원격 IP에 대한 $_SERVER을 확인할 수 있습니다

$ip = '192.168.1.99'; 

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

아약스 호출이 다른 서버에 의해 이루어집니다 경우이 IP는 항상 다른 브라우저에 의해 만들어졌다 경우는, 일할 수 있습니다.

편집 : 당신이 토큰 글로벌 보안을 사용하지 않으려면

당신은

SecurityToken::disable(); 

를 사용하거나 false를 돌려 마법의 방법 securityTokenEnabled()으로 ControllerExtension 클래스를 연결 할 수 있습니다. 물론 특수 컨트롤러 하위 클래스가이를 덮어 쓸 수 있습니다. source을 참조하십시오.

+0

mysite/_config.php에서 사용할 수 있습니까? 모든 양식에 대해 사이트 양식을 사용하지 않도록 설정하고 싶습니다. – WatsMyName

+0

나는 대답을 편집했다 – wmk

+1

'SecurityToken :: disable();은 작동하는 것처럼 들린다. http://api.silverstripe.org/3.0/class-SecurityToken.html#_disable –