Nasıl benim kullanıcı riskler olmadan, HTML kodu eklemek için izin verebilir?

8 Cevap php

Ben dinamik olarak bir web sitesinin bazı yönlerini (evet, cms çeşit) LAMBASI ortamda (debian, apache, php, mysql) yönetmek benim izin veren bir web uygulaması geliştirdi

Peki, örneğin, daha sonra bu bir cURL isteği (veya ajax) üzerinden kendi web sitesinde yayınlanan, benim sunucuda kendi özel alanında bir haber oluşturmak.

Haber (sonraki gelecekte muhtemelen TinyMCE fck anda) bir WYSIWYG editör ile oluşturulur.

So, i can't disallow the html tags, but how can i be safe? What kind of tags i MUST delete (javascripts?)? That in meaning to be server-safe.. but how to be 'legally' safe? If an user use my application to make xss, can i be have some legal troubles?

8 Cevap

Eğer php kullanıyorsanız, mükemmel bir çözüm kullanmak için HTMLPurifier. Bu kötü şeyler filtrelemek için birçok seçenek vardır, ve bir yan etkisi olarak, garantiler de html çıkışı oluşturdu. Ben bir düşmanca ortam olabilir Spam görüntülemek için kullanabilirsiniz.

Gerçekten kaldırmak için aradığınızı fark etmez, birileri her zaman etrafında almak için bir yol bulacaktır. Bir referans olarak bakmak XSS Cheat Sheet.

Örnek olarak, nasıl hiç bu geçerli XSS saldırısını kaldırmak olacak:

<IMG SRC=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>

En iyi seçenek, sadece kabul edilebilir etiketlerinin bir alt kümesini izin ve başka bir şey kaldırmak edilir. Bu uygulama White Listing olarak biliyorum ve XSS önlemek için en iyi yöntem (HTML izin vermeme dışında.)

Ayrıca test hile sayfasını kullanabilirsiniz; web sitenize olabildiğince fazla ateş ve XSS gerçekleştirmek için bazı yollar bulmaya çalışın.

Burada genel en iyi strateji, belirli etiketler beyaz listeye ve güvenli gördükleri ve her şeyi kaldırmak / kaçış olduğunu bağlıyor. Örneğin, bir beyaz liste mantıklı olabilir <p>, <ul>, <ol>, <li>, <strong>, <em>, <pre>, <code>, <blockquote>, <cite>. Alternatif olarak, kolayca güvenli HTML dönüştürülebilir ki Textile or Markdown gibi insan dostu biçimlendirme düşünün.

Aksine izin HTML yerine, HTML dönüştürülebilir diğer bazı biçimlendirme olmalıdır. Kullanıcı girişi kötü niyetli HTML dışarı atmak için çalışıyor, örneğin, neredeyse imkansız

<scr<script>ipt etc="...">

Bu kaldırılıyor bırakacaktır

<script etc="...">

stackoverflow kullandığı beyaz liste yaklaşım, bir C # Örneğin, this page bakabilirsiniz.

Kohana's security helper oldukça iyidir. Hatırladığım kadarıyla, farklı bir proje alınmıştır.

Ancak ben dışarı test

<IMG SRC=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>

LFSR Consulting's answer itibaren ve doğru kaçtı.

If it is too difficult removing the tags you could reject the whole html-data until the user enters a valid one. I would reject html if it contains the following tags:

çerçeve, frame, iframe, script, object, embed uygulaması.

Kendiniz bunları sağlamak istiyoruz ve kullanıcı meta verileri işlemek istemiyorum çünkü kafası (ve alt etiketleri), vücut, html: Ayrıca izin vermek istemiyorsanız etiketleri vardır.

Ama genelde kullanıcının kendi html kodu her zaman bazı güvenlik sorunları getirmiştir sağlamak için izin, konuşma.

Siz BBCode veya Markdown HTML gibi bazı durarak uygulama, yerine HTML tüm izin vermek yerine, dikkate almak isteyebilirsiniz.