2013-06-13 4 views
12

현재 내가 data-* HTML 태그 속성 수 있도록 HTMLPurifier이 코드를 사용하고 있습니다 : 수 있도록 데이터 - * HTMLPurifier 속성과

$def = $config->getHTMLDefinition(true); 
    $def->addAttribute('div', 'data-aaa', 'Text'); 
    $def->addAttribute('div', 'data-bbb', 'Text'); 
    // ... 

내가 한 번에 모든 data-* 속성을 허용 할 수있는 방법, 모든 HTML에 바람직 있는가 태그? (그들은 나의 경우에 보안 문제가 아닙니다. 물론 내 지식 수준입니다.)

답변

1

아니요, 유효성 검사 속성 전략을 수정하지 않으면 불가능합니다.

+0

어떻게 수행 할 수 있는지 알고 계십니까? 코드를 살펴 보았지만이 작업이 완료된 곳을 찾지 못했습니다 ... – johndodo

+0

즉, 재정의 할 수있는 isValidAttribute() 메소드가 있습니까? – johndodo

+1

아니요, 문제는 'isValidAttribute'가 해시 조회를 사용하여 수행되므로 전체 데이터 구조를 바꿔야한다는 것입니다. –

7

완전한 솔루션은 아니지만 개별 코드 data-을 전체적으로 화이트리스트에 추가하여 각 속성의 각 요소 유형을 항목별로 분류하지 않고도 요소에 배치 할 수있었습니다.

$def = $config->getHTMLDefinition(true); 
$def->info_global_attr['data-aaa-xxx'] = new HTMLPurifier_AttrDef_Text; 
$def->info_global_attr['data-bbb-yyy'] = new HTMLPurifier_AttrDef_Text; 
$def->info_global_attr['data-ccc-zzz'] = new HTMLPurifier_AttrDef_Text; 
+0

이것은 제 필요에 완벽하게 부합했습니다. – DelightedD0D