2012-07-03 15 views
9

को फिर से परिभाषित किए बिना एक विशेषता को कैसे अनुमति दें I HTML स्ट्रिंग को स्वच्छ करने के लिए HTMLPurifier का उपयोग कर रहा हूं (यह सुरक्षा के बारे में है)।HTMLPurifier: पूरे श्वेतसूची

कुछ विशेषताएं (जैसे width या height) HTMLPurifier कहलाते समय हटा दिए जाते हैं। मैं इसे एक सुरक्षा मुद्दे के रूप में नहीं मानता।

श्वेतसूची को फिर से परिभाषित किए बिना मैं इस विशेषता को कैसे जोड़ सकता हूं?

मैं Stackoverflow और HTMLPurifier प्रलेखन पर खोज की, लेकिन समाधान लगता है:

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

लेकिन यह एक समाधान है, क्योंकि मैं श्वेत सूची (मैं डिफ़ॉल्ट पर भरोसा HTMLPurifier को फिर से परिभाषित करने के लिए नहीं करना चाहती नहीं है विन्यास, मैं बस एक अपवाद जोड़ना चाहता हूँ)।

उत्तर

3

इस कोड:

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

php 5.3.10 और HTMLPurifier संस्करण 4.4.0 का उपयोग करना:

<?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"; 

?> 

इस उत्पादन उत्पन्न करता है। इसलिए इन विशेषताओं को डिफ़ॉल्ट रूप से नहीं हटाया जाता है (मैं HTMLPurifier का क्लीन इंस्टॉल का उपयोग कर रहा हूं)

किस HTML तत्व पर आप चौड़ाई/ऊंचाई विशेषताओं का उपयोग कर रहे हैं?

यह भी ध्यान दें कि xhtml सख्त का उपयोग करते समय अमान्य विशेषताओं को हटा दिया जाएगा। जहां तक ​​मुझे पता है, लेकिन आईएमजी और टेबल तत्वों पर चौड़ाई और ऊंचाई की अनुमति है, लेकिन लोअरकेस होना चाहिए। छवि तत्व पर "चौड़ाई = '100%' के अलावा (रैप -2 एच के बाद पूर्णता के लिए जोड़ा गया)

सामान्य रूप से: श्वेतसूची के बजाय addAttribute का उपयोग करें।

+0

'यह भी ध्यान दें कि xhtml सख्त' -> ठीक है, धन्यवाद का उपयोग करते समय अमान्य विशेषताओं को हटा दिया जाएगा! मैंने 'width =" 100% "' का उपयोग किया और यह मान्य नहीं है। –

+0

"सामान्य रूप से: अनुशंसित विशेषताओं को जोड़ने के लिए श्वेतसूची के बजाय addAttribute का उपयोग करें।" -> बहुत बहुत धन्यवाद! बस ! –

0

जादू उद्धरण बंद करें।

+0

क्यों? मैं तुम्हारा जवाब नहीं समझता ... क्या आप कुछ और बता सकते हैं? –

+0

http://htmlpurifier.org/docs#toclink5 देखें "मेरे गुण रहस्यमय तरीके से गायब हो रहे हैं" –

+0

धन्यवाद, मुझे यह नहीं पता था! लेकिन जादू उद्धरण पहले ही बंद हैं। मेरा सवाल है "पूरे श्वेतसूची को फिर से परिभाषित किए बिना एक विशेषता को कैसे अनुमति दें" (या यह संभव है!) –

5

मुझे एक ही समस्या मिली और एचटीएमएल शोधक एट्रिब्यूट सेटिंग्स में श्वेतसूची शैलियों में एकमात्र समाधान चिपका रहा था।

श्वेत सूची सेटिंग्स हैं:

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

धन्यवाद। यह एक [अद्यतन सूची] है (http://htmlpurifier.org/live/smoketests/printDefinition.php) (तत्व अनुभाग में) –

संबंधित मुद्दे