programing

양식 없이 코드이그니터 CSRF 토큰을 얻는 중?

newsource 2023. 9. 12. 20:02

양식 없이 코드이그니터 CSRF 토큰을 얻는 중?

내 사이트에서 CSRF 보호를 사용하도록 설정되어 있지만 CSRF 토큰이 숨겨진 필드에 배치되는 유일한 시간은form_close()사용됩니다.ajax를 통해 자료를 올리는데 500개의 오류를 방지하기 위해 CSRF도 함께 보내야 합니다.

CSRF 토큰을 페이지에 명시적으로 내장하는 방법이 있다고 생각했는데 찾을 수가 없네요.

페이지에 양식이 없는데 CSRF 토큰을 받으려면 어떻게 해야 합니까?

보안 클래스를 통해 CSRF 토큰 이름과 값을 얻을 수 있습니다.

$this->security->get_csrf_hash();
$this->security->get_csrf_token_name();

이런 식으로 양식에 추가합니다.

<input type="hidden" name="<?php echo $this->security->get_csrf_token_name(); ?>" value="<?php echo $this->security->get_csrf_hash(); ?>">

CSRF 공격 모드를 활성화하는 방법을 보여주는 예는 다음과 같습니다.

<script>
    
  var cct = '<?php echo $this->security->get_csrf_hash() ?>';
  var get_csrf_token_name = '<?php echo $this->security->get_csrf_token_name() ?>';
  
   $.ajaxSetup({
   type:'post',
  data:{ <?php echo $this->security->get_csrf_token_name() ?> :cct}
   });
   
  
    var siteurl = '<?= site_url()?>';        
       
   </script>

언급URL : https://stackoverflow.com/questions/13387091/getting-codeigniter-csrf-token-without-a-form