0

작은 따옴표 (') 나 큰 따옴표 (")와 같은 문자를 제출하고 양식을 제출 한 후에 값을 유지하면 문제가 발생했습니다 (유효성 검사 오류로 인해, , 설정에서 XSS 필터링을 가능하게 CI - 따옴표로 양식 입력 살생

  • 대신 $_POST$this->input->post("field", true)에 의해

    • 접근 양식 값 - 예)를 들면, 나는 ' 및 "

      같은 형태의 값을 얻고 있었다 내가 좋아하는 많은 것들을 시도 $this->security->xss_clean($data);

    그러나만을 사용하여

  • 을 도왔다. 마지막으로, 시스템에 가서 \ 도우미 \ form_helper.php 라인 177에서 변경된 기능 form_input 다음과 같이 -

    이전 : $defaults = array('type' => 'text', 'name' => ((! is_array($data)) ? $data : ''), 'value' => $value);

    후 : $defaults = array('type' => 'text', 'name' => ((! is_array($data)) ? $data : ''), 'value' => html_entity_decode($value, ENT_QUOTES, 'UTF-8'));

    이 내 문제를 해결했다 지금까지 아무런 휴식없이.

    나는 이것이 목적을 달성하는 올바른 방법인지 알고 싶습니다.

  • 답변

    1

    나는 당신이 가지고 있던 문제점에 관하여 아주 확실하지 않지만 그것을 고치기 위해 시스템 파일을 편집하는 것은 좋은 생각이 아니다. 결코 시스템 폴더에 아무것도 변경해야 올바른 방법은 application/helpers/MY_form_helper.php (application/config/config.php에 정의 된 자신의 접두사를 사용하여) 파일을 만들어 양식 도우미를 확장하고 원하는 기능을 재정의하는 것입니다 바꾸다. 모양은 다음과 같습니다.

    <?php 
    defined('BASEPATH') OR exit('No direct script access allowed'); 
    
    if (! function_exists('form_input')) 
    { 
        /** 
        * Text Input Field 
        * 
        * @param mixed 
        * @param string 
        * @param string 
        * @return string 
        */ 
        function form_input($data = '', $value = '', $extra = '') 
        { 
         $defaults = array(
          'type' => 'text', 
          'name' => is_array($data) ? '' : $data, 
          'value' => html_entity_decode($value, ENT_QUOTES, 'UTF-8') 
         ); 
         return '<input '._parse_form_attributes($data, $defaults).$extra." />\n"; 
        } 
    } 
    
    /* End of file MY_form_helper.php */ 
    /* Location: ./application/helpers/MY_form_helper.php */