2010-08-12 3 views
0

모두! 당연히 나는 아직도 ... HTML 정수기와 싸우고HTML Purifier가 런타임 생성 구성 설정을 무시하는 이유는 무엇입니까?

그래서, 내 /config/purifier.php은 다음과 같습니다

<?php defined('SYSPATH') or die('No direct access allowed.'); 
return array(
    'settings' => array(
     'HTML.Allowed' =>'a,b,strong,p,ul,ol,li,img[src],i,u,span,', 
    'HTML.MaxImgLength' => 250, 
    'CSS.MaxImgLength' => '250px' 
      ), 
); 
?> 

을하고, HTML 정수기는 자신의 필터를 사용하는 보안 :: clean_xss() 메소드를 오버로드 .

데이터 위생을위한 헬퍼 함수 두 개를 만들었습니다 : clean_whitelist(). 설정 파일에서 HTML.Allowed 설정으로 허용되지 않는 것을 제거합니다. 모든 태그를 제거합니다 무시하고 및 clean_all는(),()

public static function clean_all(array $dirty_data, array $ignore) { 
    $config = Kohana::config('purifier'); 
    $settings = $config['settings']; 
    $config->set('settings', array ('HTML.Allowed'=>'')); 
    foreach($dirty_data as $key => $value) { 
    if(! in_array($key, $ignore)) { 
    $dirty_data[$key] = Security::xss_clean($dirty_data[$key]); 
    } 
    } 
    return $dirty_data; 
} 

public static function clean_whitelist($dirty_data) { 
    return Security::xss_clean($dirty_data); 
} 

clean_whitelist을 무시로 전달 의도 한대로 작동되지만, 필드, clean_all는 여전히 태그를 할 수 있습니다. 왜 내가 완전히 Kohana::config('purifier')의 새로운 부하를 var_dump했을 때, 내가 $config->set이라는 파일을 열었을 때 파일에 내 HTML.Allowed => '...이 표시됩니다.

화이트리스트를 계속 사용하는 이유에 대한 아이디어 런타임에 빌드 한 config 파일을 사용합니까?

언제나처럼, 누구에게 기여해 주셔서 감사합니다!

+0

xss_clean의 기능은 무엇입니까? –

+0

xss_clean이 htmlpurifier에 의해 오버로드되었습니다.이를 파고 들고 과부하가 발생해야합니다. – PaleAilment

답변

관련 문제