2013-12-12 8 views
5

ile kurcalamamasının sağlanması İstemcimin sunucuma ne gönderdiğini göremediğimden emin olmak için bazı istemci tarafında veri şifrelemesi yapan bir web uygulaması yazıyorum. Gerçekten endişe duyduğum şey, bir üçüncü tarafın JavaScript koduma erişmesi ve daha sonra JavaScript dosyama bir arka kapı veya başka bir zararlı kod eklemesidir.JavaScript'in

JavaScript genellikle üçüncü taraf CDN'lerinde barındırıldığından, tarayıcı indirilmeden önce JavaScript dosyasının değiştirilmemesi veya değiştirilmemesi nasıl sağlanır? Sayfamda, tarayıcımdaki bazı JavaScript'le yüklenen bazı yüklemelerden daha büyük bir güvenlik uyarısı olmasını tercih ederim.

Normal bir programda, dosyanın değiştirilmediğinden emin olmak için dijital olarak imzalarım ancak tarayıcıların bir JavaScript dosyasını indirmeden ve/veya yüklemeden önce belirli bir imzayı denetlemeyi desteklemediklerini düşünmüyorum. Bunun bir çözümü olmalı, aksi takdirde CDN'deki herhangi bir dosyayı barındırmanız büyük bir güvenlik riski olacaktır. SSL yalnızca dosyayı CDN sunucusunda otururken değil, taşıma sırasında korur.

+1

CDN'niz saldırıya uğramış gibi mi? – Mathletics

+0

@Mathletics Yep. Ya da CDN sağlayıcısında bir haydut çalışanı biraz "eğlenceli" olmaya karar verdi. – Cromulent

+0

Her iki durumda da yeni bir CDN bulmanız gerekiyor. – Mathletics

cevap

1

Komut dosyaları dinamik olmadıkça, karmalarını veritabanında saklayabilir ve istemci tarafını karşılaştırabilirsiniz. Bkz. http://pajhome.org.uk/crypt/md5/

+0

MD5 hash'larını doğrulamak için kullandığınız JavaScript kurcalandığında ne olur? Hiçbir şeye güvenme. – Cromulent

+0

@Kurulmaz, kurcalamaya karşı korumanızla kurcaladıysanız, siz saydamsınız demektir. Dosyalarınızı doğrudan sunun. Kendi KOK'larınızı alın, fiberleri onlara çekin. GÜVEN DEĞİL. – Mathletics

+2

Doğrulama kitaplığını doğrudan sağlayın (gömülü JS'deki gibi). Bu amaç için – rishta

3

İstemci tarafına değiştirilmediğinden emin olmak ve üçüncü taraf CDN'lerine güvenmiyorsanız, JavaScript içeriğini doğrudan HTTPS üzerinden kaynak sunucunuzdan sunmanız gerekir.

Karmaları karşılaştırma (@rishta's yanıtına göre), bunu yapmak için JavaScript'i barındırmanız gerektiği anlamına gelir (bu, ya sunucunuzda ya da sayfanızda sunulan ayrı .js dosyalarındadır) böylece istemci tarafı şifrelemesini de sunabilirsiniz. Sunucudan kod yerine muhtemelen daha az genel gider demek.