질문 Q #23536
ci4 csrf 사용 관련해서...
안성 2021-07-29 19:02:47

ci4 csrf를 사용중인데

 

일부러 token 값을 틀리게 해서 폼값을 넘겼을때

 

아무런 에러페이지나 에러문구 없이 이전 페이지로 그냥 넘어가 버리네요.

 

throw SecurityException::forDisallowedAction(); 여기 까지 실행되는건 확인했는데..

 

조언 부탁드립니다.

 

** vendor/codeigniter4/framework/system/Security/Security.php

if (! isset($token, $_COOKIE[$this->cookieName]) || $token !== $_COOKIE[$this->cookieName])

{

     throw SecurityException::forDisallowedAction();

}

 

** vendor/codeigniter4/framework/system/Security/Exceptions/SecurityException.php

namespace CodeIgniter\Security\Exceptions;

use CodeIgniter\Exceptions\FrameworkException;

class SecurityException extends FrameworkException

{

    public static function forDisallowedAction()

    {

        return new static(lang('Security.disallowedAction'), 403);

    }

    

    public static function forInvalidSameSite(string $samesite)

    {

        return new static(lang('Security.invalidSameSite', [$samesite]));

    }

}

답변 5
#1 변종원(웅파) 2021-07-30 07:05:36
매뉴얼 참고요. 기본사항입니다. http://ci4doc.cikorea.net/libraries/security.html#csrf
#2 테러보이 2021-07-30 09:06:56

.env의

security.redirect   = true

가 켜져있으면 리다이렉트됩니다.

 

(app\Config\Security.php)

#3 테러보이 2021-07-30 09:12:08
#4 안성 2021-07-31 17:41:11

답변 주신분들 감사합니다.

app/config/Security.php public $redirect = false; 는 적용되지 않고

vendor/codeigniter4/framework/system/Security/Security.php $redirect = false; 해야 에러 페이지가 나오네요..

 

 

#5 테러보이 2021-07-31 23:47:01
벤더 안쪽은 만지는 파일이 아닙니다 .env가 있다면 그 설정이 우선 적용되는지라 그파일부터 체크해보세요