Nasıl HTML PHP ile beyaz liste izin verebilir

4 Cevap php

Ben bir sürü tartışma PHP ile veri filtreleme en iyi yöntemleri yıldır orada olduğunu biliyorum ama benim geçerli projede beyaz liste yaklaşım gitmek istiyorum.

Ben yalnızca bir kullanıcı şu HTML kullanmak mümkün olmak istiyorum

<b>bold</b>
<i>italics</i>
<u>underline</u>
<s>strikethrough</s>
<big>Big size</big >
<small>Small size</small>

Hyperlink <a href="http://www.site.com">website</a>

A Bulleted List:
<ul>
<li>One Item</li>
<li>Another Item</li>
</ul>

An Ordered List:
<ol>
<li> First Item</li>
<li> Second Item</li>
</ol>

<blockquote>Because it is indented</blockquote>

<h1>Heading 1</h1>
<h2>Heading 2</h2>
<h3>Heading 3</h3>

Herkes bana PHP performans için bunu yapmanın en iyi yöntemi gösterebilir misin? Ben sadece geçmişte izin tüm html eksi bazı kodları

4 Cevap

Basit çözüm müsaade etiketlerini içeren ikinci bir argüman kabul eder strip_tags(), hangi olacaktır:

strip_tags($string, "<b><i><u><a><s><big><small><ul><li><ol><blockquote><h1><h2><h3>");

Ben HTML Purifier Library güzel çalışacaktır inanıyorum:

http://htmlpurifier.org/

HTML Purifier is a standards-compliant HTML filter library written in PHP. HTML Purifier will not only remove all malicious code (better known as XSS) with a thoroughly audited, secure yet permissive whitelist, it will also make sure your documents are standards compliant, something only achievable with a comprehensive knowledge of W3C's specifications. Tired of using BBCode due to the current landscape of deficient or insecure HTML filters? Have a WYSIWYG editor but never been able to use it? Looking for high-quality, standards-compliant, open-source components for that application you're building? HTML Purifier is for you!

Başka bir yol, ikinci argümanı ile sayisinda strip_tags kullanıyor.

http://php.net/manual/en/function.strip-tags.php

Ben ilk normalleştirmek için düzenli yoluyla gönderilen kodu çalıştırmak ve XPath kullanın ya da yalnızca seçmek izin öğelerine XSLT geçerli olacak. Bu şekilde, nothing sızıntı olabilir. Herhangi bir web sitesi durumda muhtemelen binlerce olurdu ki, çok göz önünde ayı yapmak değilse [düzenli kullanır ve xpath / XSLT] böylece ortalama performans etkisinin önemsiz her yazma isteği için okuma istekleri yüzbinlerce. Eğer diğer taraftan toplu işlem yapıyorsanız ..

Edit: oh ve: DON'T düzenli ifadeler ile bunu. Bu doğru bir şekilde yapmak için matematiksel olarak imkansızdır.