2011-11-04 20 views
19

Bir JS kitaplığı üzerinde çalışıyorum ve Github'da kullanıcılara kendi geri aramalarını tanımlama ve komutları çalıştırma gibi bir demo sayfası oluşturmak istiyorum.jsFiddle, kullanıcı tanımlı JavaScript'i tehlikeli olmadan nasıl kullanabilir ve uygulayabilir?

"eval() kötülük" ifadesini biliyorum ve komut dosyalarının eval() körünün XSS ve diğer güvenlik sorunlarına nasıl yol açabileceğini görebiliyorum. Bazı alternatif programları pişirmeye çalışıyorum.

Gerçekten jsFiddle'ın etkileşiminden zevk alıyorum. Kaynaklarına bir göz attım ama jsFiddle'ın tehlikeli olmadan kullanıcı tanımlı JavaScript'e nasıl izin verdiğini ve çalıştırdığını burada öğrenebileceğini umuyordum. Bir 3. parti eko sunucusu içermediği sürece, yaklaşımı taklit edebilmeyi umuyorum.

cevap

24

jsFiddle, kullanıcı komut dosyalarını ayrı bir etki alanında (http://fiddle.jshell.net (try it and see) yürütür.
Bu nedenle, üst çerçeve ile etkileşime giremez ve çerezleri çalamaz.

Bunu, statik bir sayfayı Javascript'teki sorgulama listesinden okuyan ayrı bir etki alanına yerleştirerek ayrı bir sunucu olmadan yapabilirsiniz.
Sayfa başlığını kullanarak geri bildirim yapabilirsiniz (ve böylece düşman da olabilir).

+0

Ayrı bir etki alanında yürütmenin anlamı nedir - JavaScript'i yürüten bir sayfa içeren bir iFrame yükleyin? – buley

+0

@editor: Tam olarak. '