개발 Q&A

제목 CI에 SameSite 적용 시 post 폼에서만 403에러가 발생하는 원인
카테고리 PHP
글쓴이 정수리 작성시각 2024/07/15 14:22:38
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 2310   RSS

웹 취약점으로 '쿠키속성검사(Secure, httpOlny, Same Site), '로 발견되어 구글링과 포럼을 통해

http://ww.cikorea.net/bbs/view/qna?idx=22158&page=1&view_category=&lists_style=

 

$config['cookie_path'] = '/; SameSite=None;';
$config['cookie_secure']	= TRUE;
$config['cookie_httponly'] = true;

 

위의 설정을 적용하고 페이지 전체적으로 기능 검사를 하고 있는데

post form의 경우 submit 시 403 에러가 발생합니다.

get form의 경우 기능이 정상적으로 작동합니다.

 

위의 설정 경우 도메인 전체 쿠키에 대해 적용되는 것으로 알고 있습니다.

위의 cookie_path와 cookie_secure를  '/', false로 변경하면 post form도 정상적으로 작동합니다.

 

정확한 원인을 찾지 못해 글을 올리게 되었습니다.

테스트 환경이 https가 아니라서 그런거라고해도 get 폼도 작동을 안해야하는게 맞지 않을까요?

 

 

 다음글 코드이그나이터4 앱 설치후 안되요 (2)
 이전글 CI4 쿼리빌더 질문입니다. (2)

댓글

cilove / 2024/07/16 09:14:02 / 추천 0

해당 현상은 쿠키 문제가 아니라 csrf문제로 보입니다.

포스트 폼에 csrf 토큰을 포함 하도록 변경하세요.

http://ci4doc.cikorea.net/libraries/security.html?highlight=csrf#google_vignette

정수리 / 2024/07/16 10:12:14 / 추천 0

@cilove

답변감사합니다.

ci3에서 csrf 옵션활성화했고 form헬퍼를 사용하면 자동으로 token값이 생성되고 같이 전송되는 상황입니다.

$config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'csrf_token';
$config['csrf_cookie_name'] = 'csrf_cookie';
$config['csrf_expire'] = 7200;
$config['csrf_regenerate'] = true;

<?php echo form_open(current_url()); ?>
...
...
<?php echo form_close(); ?>

 

cilove / 2024/07/16 14:55:43 / 추천 0
아 제가 ci3는 안써봐서 ㅎㅎㅎ
csrf_regenerate를 false로 바꿔서 해봐도그런지 확인해보세요
darkninja / 2024/07/17 22:52:05 / 추천 0

[Suggestion] same-site attribute for cookie #5791

https://github.com/bcit-ci/CodeIgniter/issues/5791

위 링크를 참고해 보세요

set_cookie 함수가 다르다면 최신버젼으로 바꾸면 해결될지도 모르겠네요.

https://github.com/bcit-ci/CodeIgniter/blob/develop/system/core/Input.php