İyi Uygulama: Kullanıcı tarafından oluşturulan HTML temizleme

4 Cevap php

Ben "" Bir iframe = WYSIWYG editörü genişlik designMode kodlama ediyorum. Editör çalışıyor ve veritabanında olduğu gibi i kodunu depolamak.

Html çıktılamak önce i cross-site scripting-ve diğer korkutucu şeyleri önlemek için sunucu tarafında php ile "temizlemek" zorunda. Bu nasıl en iyi uygulama çeşit var mı? Ne etiketleri tehlikeli olabilir?

GÜNCELLEME: Sabit Tipo, bu What You See You Get What Is bulunuyor. Yeni bir şey :)

4 Cevap

Iyi uygulama biliyorum sadece bazı şeyler tehlikeli değildir, izin ve geri kalan her kaçış / kaldırmaktır. Bu konuda bir tartışma için kağıt Automated Malicious Code Detection and Removal on the Web (OWASP AntiSamy) (kütüphane Java için, ama ilkeler her dil için geçerlidir) Bkz.

Bu izin gerçekten bükük iseniz, bir beyaz liste yaklaşım kullanmalısınız.

En iyi yaklaşım, HTML vermemek ve yerine basitleştirilmiş bir işaretleme biçimi kullanmak için muhtemelen; Eğer HTML ön-render ve performans bir endişe ise veritabanında bu saklayabilirsiniz. Sorunların bu tür kaçınmak Markdown, Textile, reStructuredText, vb kullanmak için büyük nedenlerinden biridir

NOTE: GitHub-Aromalı Markdown (GFM) değil, Standart Markdown (SM) ile bağlantılıdır. GFM son kullanıcılar SM ile sahip olduğu bazı ortak sorunları giderir.

Ben sunucu tarafı dil olarak Perl ile son zamanlarda aynı sorunun içine baktı.

Bunu yaparken ben HTML Purifier, hangi ne istediğiniz olabilir koştu. Ama belli ki bu PHP ve Perl olduğu gibi, ben aslında bunu test vermedi.

Ayrıca, benim araştırma ben bu çok zor bir iş olduğunu ve mümkünse Hank Gay tarafından önerildiği gibi, Markdown gibi basitleştirilmiş bir işaretleme dili kullanılarak düşünün sonuca geldi.

ASP. NET aşina iseniz, sadece Için "& g t;" "& L t;"

Php, sen htmlspecialchars () fonksiyonlarını kullanabilirsiniz.

Özel karakterler kodlanmış sonra, cross-site betik önlenebilir.