2011-04-13 1 views
1

로컬로 작성한 일부 HTML을 HTML 정제기를 통해 실행하려고합니다. 그것은 전적으로 나에 의해 생성되었으므로 XSS 취약점이 없음을 알고 있습니다. 내가 정수기를 통해 그것을 실행하려고하지만 href = 'javascript : myFunc()'는 내가 무엇을 시도하든간에 구문 분석됩니다.HTML 정수기에서 href = 'javascript : myFunc()'를 허용하는 방법은 무엇입니까?

내 현재 설정은 다음과 같습니다이 전혀 작동하지 않는

$string = file_get_contents($myHTMLFile); 
$schemes = array (
    'http' => true, 
    'https' => true, 
    'mailto' => true, 
    'ftp' => true, 
    'nntp' => true, 
    'news' => true, 
    'javascript' => true, 
); 
$config = HTMLPurifier_Config::createDefault(); 
$config->set('URL.AllowedSchemes', array($schemes)); 
$purifier = new HTMLPurifier($config); 
$string = $purifier->purify($string); 

- 모든 자바 스크립트 밖으로 제거된다.

모든 다양한 HTML Purifier 설정을 살펴 봤지만 필요한 것을 찾을 수 없습니다. 어떤 대답이 있습니까?

미리 감사드립니다.

+0

http://stackoverflow.com/questions/5138282/how-do-i-add-javascript-url-scheme-in-html-purifier-module-in-drupal에는 문서 링크가 있습니다. 내가 그것을 거의 의식 할 수는 없지만. (성가신 구성) - 당신이 알아낼 경우, 여기에 직접 답변을 게시하십시오! – mario

답변

1

간단한 답변 : HTML 정수기를 사용하지 마십시오. 대신 HTML Tidy와 같은 것을 사용하십시오.

더 복잡한 답변 : javascript : URL을 사용하지 마십시오. 대신 클래스 특성을 JavaScript에 연결하려는 링크에 연결 한 다음 JavaScript 처리기에서이 클래스가있는 링크를 찾고 JavaScript 코드를 onClick 처리기로 연결하게하십시오.

더 복잡한 대답 : 새 javascript URI 스키마를 만들고 함수 인 고정 문자열 만 수락하도록 프로그래밍하십시오.

관련 문제