2014-06-13 31 views

cevap

11

Güvende olduğundan emin olamazsınız. Her zaman tüm kullanıcı girişlerini düşmanca olarak ele alın.

Ancak, eğer tarafından "güvenli" Eğer, o zaman senin Sanitization Helper sunmak "potansiyel gerçekten <script> s ve <style> s gibi zararlı elementler yoksun" anlamına gelir. HTML'nizi veritabanından yazdırabilir ve yalnızca belirli bir beyaz listeye izin verebilirsiniz.

<%=raw sanitize @page.description, tags: %w(h2 p strong em a), attributes: %w(id class href) %>

Yukarıdaki örnek tüm h2, p, strong, em ve a etiketleri ve üzerlerinde sadece id, class ve href özelliklerini sağlayacaktır. Diğer her şey kaldırılacak.

+0

Bu ses iyi bir çözüm gibi geliyor, Bu bir ürün açıklamasıdır ve yalnızca bazılarına ihtiyacım var etiketleri. Yani sadece bazı etiketlere izin veriyorum, ben gitmek için iyi miyim? Veritabanında saklanmadan önce verileri dezenfekte etmenin herhangi bir yolu var mı? – user3631047

+0

Veritabanına girmeden önce girdileri dezenfekte etmek için aynı yardımcıyı kullanabilirsiniz, ama ben şahsen olmazdım. En iyi çözümün onu kullanıcı girdisi olarak saklamak olduğunu ve çıktı aldığınız her zaman sterilize edilmeye özen göstereceğini söyleyebilirim. (Örneğin, gelecekte daha önce çıkarmış olduğunuz bir öğeye izin vermek istediğinizde) –

+0

Teşekkürler, doğru, diğer cevapları bekledikten sonra en iyi cevabı kabul ediyorum. – user3631047

0

Güvenilir bir kaynaktan geldiği sürece güvenlidir, aksi halde tam olarak ne sakladıklarını bilmezsiniz. Yani eğer depolayan tek kişi sensin, bunun için gidin.

+0

Hayır, tek sıradan değilim, Bu halka açık, bu yüzden şimdi nasıl emin olabilirim? – user3631047

+0

Başvuru: http://stackoverflow.com/questions/14605935/database-for-content-ok-to-store-html – Cereal

İlgili konular