| 제목 | ci3 csrf 모바일 환경 문의드립니다 | ||
|---|---|---|---|
| 카테고리 | PHP | ||
| 글쓴이 | izreal | 작성시각 | 2025/11/07 17:08:39 |
|
|
|||
|
config.php에서 아래와 같이 csrf token 설정해서 사용중입니다. ``` $config['csrf_protection'] = TRUE; $config['csrf_token_name'] = 'csrf_test_name'; $config['csrf_cookie_name'] = 'csrf_cookie_name'; $config['csrf_expire'] = 7200; $config['csrf_regenerate'] = FALSE; ```
그리고 form_open() 메소드 이용해서 post 보냈고 pc 환경에서는 정상적인 결과가 나타납니다. (같은 url에서 post 했습니다) 그런데 모바일 (아이폰, 사파리)에서 테스트하면 an error was encountred / the action you have required is not allowed 에러가 발생합니다. 테스트를 위해 화면에 $_COOKIE['csrf_cookie_name'] 값을 출력해보았는데, pc에서는 해당 값이 정상적으로 보이고 모바일에서는 보이지 않습니다. 원인을 알 수 있을까요? 아이폰 설정의 쿠키는 열려있습니다. |
|||
| 이전글 | ci에 스트리밍 기술 접목 방법 (1) | ||
|
izreal
/
2025/11/07 17:13:49 /
추천
0
확인해보니 갤럭시에서는 잘 되네요......
|
|
변종원(웅파)
/
2025/11/07 18:46:40 /
추천
0
CodeIgniter에서 사파리 사용 시 CSRF 오류가 발생하는 이유는 사파리의 특정 기능(예: 자동 완성, 새 탭에서 열기 등)이 CSRF 토큰을 제대로 처리하지 못하기 때문일 수 있습니다. 이 문제를 해결하려면 csrf_token을 동적으로 전송하거나, 사파리에서 문제가 발생하는 특정 기능을 일시적으로 비활성화하거나, 에디터 업로드처럼 CSRF 보호가 불필요한 부분에서 일시적으로 비활성화하는 방법 등을 고려해볼 수 있습니다.
해결 방법 동적 CSRF 토큰 전송: 사파리가 CSRF 토큰을 올바르게 전달하지 못할 수 있으므로, JavaScript를 사용하여 CSRF 토큰을 AJAX 요청의 헤더나 폼 데이터에 동적으로 포함하여 전송합니다. 특정 기능 일시적 비활성화: 사파리 자체 기능 비활성화: 사파리의 자동 완성 기능이 토큰을 덮어쓰는 경우도 있습니다. 이 경우 사파리 설정에서 관련 기능을 비활성화해 볼 수 있습니다. csrf_token 비활성화: csrf_token이 꼭 필요한 경우가 아니라면, config/config.php 파일에서 csrf_token을 비활성화할 수 있습니다. 하지만 보안상 추천하지 않으므로, 꼭 필요한 부분만 비활성화하는 것이 좋습니다. 에디터 업로드처럼 특정 기능에서만 CSRF 비활성화: 에디터의 파일 업로드와 같이 별도의 CSRF 토큰 전송이 필요한 경우, 해당 메소드에서는 CSRF 보호를 일시적으로 비활성화할 수 있습니다. .htaccess 파일 설정 확인: 사파리에서 .htaccess 파일 관련 오류가 발생하는 경우, .htaccess 파일의 설정을 확인하고 수정하여 오류가 발생하는 부분을 해결해 볼 수 있습니다. 추가적인 해결 방법 브라우저 캐시 지우기: 사파리 브라우저의 캐시를 지우고 다시 시도해 보세요. CSRF 설정 확인: CodeIgniter의 csrf_token 설정이 올바르게 되어 있는지 확인하세요. 다른 브라우저에서 확인: 다른 브라우저에서 테스트해 보시고, 사파리에서만 문제가 발생하는지 확인하세요. 로그 확인: 서버 로그를 확인하여 CSRF 관련 오류가 있는지 확인하고, 오류가 발생하는 부분을 찾으세요. |
|
izreal
/
2025/11/07 18:56:16 /
추천
0
답변 감사드립니다. 추가 테스트는 출근 이후에 가능할듯하나, 문제는 아이폰의 웹에서는 csrf의 쿠키값 자체를 받지 못한다는 점입니다.
|