2012-07-03 24 views
9

Tôi đang sử dụng HTMLPurifier để vệ sinh chuỗi HTML (đó là về bảo mật).HTMLPurifier: Cách cho phép một thuộc tính duy nhất mà không cần xác định lại toàn bộ danh sách trắng

Một số thuộc tính (như width hoặc height) được xóa khi HTMLPurifier được gọi. Tôi không coi đây là vấn đề bảo mật.

Làm cách nào để thêm thuộc tính này mà không xác định lại danh sách cho phép?

Tôi tìm kiếm trên Stackoverflow và HTMLPurifier tài liệu, nhưng giải pháp duy nhất có vẻ là:

$config->set('HTML.Allowed', 'p,b,a[href],i'); 

Nhưng đây không phải là một giải pháp, bởi vì tôi không muốn để xác định lại danh sách trắng (Tôi tin tưởng mặc định HTMLPurifier cấu hình, tôi chỉ muốn thêm một ngoại lệ).

Trả lời

3

Mã này:

<?php 

require('purifier/library/HTMLPurifier.auto.php'); 

$html = "<img width='200' height='200' src='test.jpg' alt='bla>"; 
$config = HTMLPurifier_Config::createDefault(); 
$purifier = new HTMLPurifier($config); 
echo $purifier->purify($html) . "\n"; 

$html = "<table width='100'><tr><td>test</td></tr></table>"; 
echo $purifier->purify($html) . "\n"; 

?> 

Tạo đầu ra này:

<img width="200" height="200" src="test.jpg" alt="bla" /> 
<table width="100"><tr><td>test</td></tr></table> 

Sử dụng php 5.3.10 và HTMLPurifier phiên bản 4.4.0. Vì vậy, các thuộc tính này không bị loại bỏ theo mặc định (Tôi đang sử dụng cài đặt HTMLPurifier sạch)

Bạn đang sử dụng thuộc tính chiều rộng/chiều cao nào?

Cũng lưu ý các thuộc tính không hợp lệ sẽ bị tước khi sử dụng xhtml nghiêm ngặt. Chiều rộng và chiều cao trên các phần tử img và bảng được cho phép theo như tôi biết nhưng phải là chữ thường. Ngoại trừ "width = '100%'" trên phần tử hình ảnh (được thêm cho đầy đủ sau khi rap-2-h nhận xét của anh ấy)

Nói chung: sử dụng addAttribute thay vì danh sách trắng để thêm thuộc tính được phép.

+0

'Cũng lưu ý các thuộc tính không hợp lệ sẽ bị tước khi sử dụng xhtml strict' -> Ok, cảm ơn! Tôi đã sử dụng 'width =" 100% "' và nó không hợp lệ. –

+0

"Nói chung: sử dụng addAttribute thay vì danh sách trắng để thêm các thuộc tính được phép". -> Cảm ơn rất nhiều! Đó là nó ! –

0

Tắt báo giá kỳ diệu.

+0

Tại sao? Tôi không hiểu câu trả lời của bạn ... Bạn có thể giải thích thêm một chút nữa không? –

+0

http://htmlpurifier.org/docs#toclink5 xem "thuộc tính của tôi đang biến mất bí ẩn" –

+0

Cảm ơn, tôi không biết điều đó! Nhưng báo giá ma thuật đã tắt. Câu hỏi của tôi là "Cách cho phép một thuộc tính duy nhất mà không xác định lại toàn bộ danh sách trắng" (hoặc có thể!) –

5

Tôi đã tìm thấy cùng một vấn đề và giải pháp duy nhất được dán trong các kiểu danh sách trắng vào bộ lọc HTML thêm cài đặt thuộc tính.

Các thiết lập danh sách trắng là:

a.class, 
a.href, 
a.id, 
a.name, 
a.rev, 
a.style, 
a.title, 
a.target, 
a.rel, 
abbr.title, 
acronym.title, 
blockquote.cite, 
div.align, 
div.style, 
div.class, 
div.id, 
font.size, 
font.color, 
h1.style, 
h2.style, 
h3.style, 
h4.style, 
h5.style, 
h6.style, 
img.src, 
img.alt, 
img.title, 
img.class, 
img.align, 
img.style, 
img.height, 
img.width, 
li.style, 
ol.style, 
p.style, 
span.style, 
span.class, 
span.id, 
table.class, 
table.id, 
table.border, 
table.cellpadding, 
table.cellspacing, 
table.style, 
table.width, 
td.abbr, 
td.align, 
td.class, 
td.id, 
td.colspan, 
td.rowspan, 
td.style, 
td.valign, 
tr.align, 
tr.class, 
tr.id, 
tr.style, 
tr.valign, 
th.abbr, 
th.align, 
th.class, 
th.id, 
th.colspan, 
th.rowspan, 
th.style, 
th.valign, 
ul.style 
+0

Cảm ơn. đây là [danh sách được cập nhật] (http://htmlpurifier.org/live/smoketests/printDefinition.php) (trong phần Phần tử) –

Các vấn đề liên quan