Ben bir üye sayfası sisteminin güncellenmesi oldum ve gereksinimleri biri sağlamaktır kalın, altı çizili, italik, yazı tipi, renk ve belli alanlarda but not font boyutu veya stili üzerinde bağlantıları - tüm bu bir WYSIWYG editör ile. Bu aslında <script>
bir preg_replace()
ile kaldırarak, yani bir textarea ve bazı minimal HTML filtreleme ile yapıldı. Çılgın ve kesinlikle güvensiz biliyorum.
My first revision was to use TinyMCE and disallow certain tags within TinyMCE, the only problem is that obviously I cannot rely on TinyMCE as any sort of validator and securing HTML input against XSS I have discovered is an absolute minefield. I've spent the last hour or so reading up on certain practices, and it seems its going to be near-impossible to allow certain HTML tags/attributes without messing up the current profiles and further more allowing other customizations such as font-size and stuff with inline styles. For example I need to allow font colours with span tags, but allowing the style attribute will also allow for any piece of CSS.
Bu bize güvenle çıkışında htmlspecialchars()
uygulamak ve daha sonra bir BBCode çözümleyici ile üretilen herhangi bir HTML kontrolü tamamen olmasını sağlayacak gibi ben şimdi, bir WYSIWYG editör ile BBCode kullanma fikri ile dappled var [ b], [u], [i] ve [color] ile etiketleri nl2br()
satır sonları için.
Tek sorun, ben BBCode geçerli HTML kurulum dönüştürmek için bir şey kodu gerekir olduğunu.
Benim ana sorgu BBCode ile yukarıda belirtilen adımlar XSS saldırılarından korumak için yeterli olacak mı? Ya da kullanabilirsiniz HTML güvenliği daha zarif / belirgin yöntem var mıdır?