2011-06-11 3 views

답변

8

왜 CodeIgniter의의 XSS 필터는 관계없이 경우 대신 처음부터 모든 입력을 살균의 특정 일에 정규 표현식을 통해 반응 않는다 내용이 오염 되었습니까?

이것은별로 의미가 없습니다. 먼저 무엇인가를 확인하지 않고 무엇인가가 "오염 된"것인지 아닌지를 말하면 어떨까요? CI의 xss_clean()의 정의에

, 우리는 항상 입력을 소독하고 싶지 않아요. 언급했듯이 중요한 결과물은 XSS atacks입니다. 항상 CI의 xss_clean()으로 "sanitize"입력을 한 경우, 예를 들어 내 블로그에 자바 스크립트 또는 PHP 코드 예제를 게시하거나 사용자가 주석에서 어떻게 처리 할 수 ​​있습니까? 결국 [removed]이됩니다. 또한

이 입력하는 동안 수행하지 출력에,

당신은 당신의 CI의 설정에서 글로벌 XSS 필터를 사용하는 옵션이 어떻게 (이해야하는데?처럼) 왜, 어떤 것 손에 넣기 전에 xss_clean()$_POST, $_GET$_COOKIE 데이터에 자동으로 실행하십시오. 이것은 자신을 보호 할 수있는 최저 수준이며, 항상 옵션을 사용하여 데이터를 명시 적으로 정리할 수 있습니다. 예를 들면 :

// With the Input class on $_POST data 
$this->input->post('username', TRUE); // Second parameter runs xss_clean 

// Using the Security class on any data 
$this->security->xss_clean($username); 

// Using the Form Validation class to automatically clean the input 
$this->form_validation->set_rules('username', '', 'xss_clean'); 

여전히 단순히 이미 당신을 위해 xss_cleaned 될 글로벌 필터를 가능하게하여, 대신 $_POST['username']을 사용할 수 있기 때문에. 이것은 게으른 방법이며, 불행히도 전역을 정리하면 되돌릴 방법이 없습니다.

XSS 공격이 언제 어디에서 발생할 수 있는지 이미 알고있는 경우 원하는 경우 쉽게 사용할 수있는 기능이 있습니다. 이것은 이 아니며은 마술처럼 모든 데이터를 "안전"하게 만듭니다. 단지 악의적 인 코드 삽입을 막을뿐입니다. </div>과 같은 더 무해한 필터가이 필터를 통과합니다. 사용되는 문맥에 대해 적절한 방법으로 명시 적으로 입력을 항상 소독해야합니다.

+0

글로벌 xss 필터를 켜고 동시에 적용 가능한 경우 xss_clean()을 명시 적으로 적용해도 괜찮습니까? – Obay

+1

get, post 및 cookie를 직접 사용하는 경우 : 전역 적으로 활성화 된 경우 필터가 자동으로 해당 항목에서 실행됩니다. 그래도 XSS 용 벡터는 자바 스크립트를 실행할 수있는 곳이라는 것을 기억하십시오. 예를 들어, Excel 또는 텍스트 파일로 인쇄 할 때 문제가되지 않습니다. 나는 항상 filter * output *을 말하고 입력하지 않는다. http://stackoverflow.com/questions/9674848/codeigniter-input-filtering/9675233#9675233 –

+1

... 그렇게 말하면, 그것이 당신이 궁금해하는 것이면 그것을 해치지 않을 것입니다. http : //stackoverflow.com/questions/9714945/is-it-okay-to-repeatedly-xss-clean-data-in-codeigniter –

관련 문제