'Javascript korsanlığı' konusunda endişelenmeli miyim?


11

Bir istemci tarafı Javascript uygulaması (biraz sunucu etkileşimi ile) yazarsam, insanların Javascript dosyalarını kendi sitelerine kopyalamasını nasıl engelleyebilirim? Hiç mi yapmalıyım?

Yanıtlar:


34

Umursar mısın? Hayır.

Neden? Çünkü bu konuda gerçekten yapabileceğiniz hiçbir şey yok.

Bazıları tahmin edilebilir şekilde gizleme önerdi. Bu Java ve .Net için çalışır, ancak Python, Javascript ve Perl hepsi düz metindir, bu yüzden gerçekten yapabileceğiniz çok az şey vardır. Sitenizdeki değer şüphesiz sunucu tarafıdır, bu yüzden Javascript hakkında endişelenmeyin.


1
Demonte (iddia edilen) gizlenmiş Java'dan ne bilmem gerektiğini anlayabiliyorsam, Javascript'i yönetebileceğimi düşünüyorum ve bu tür "hackleme" veya tersine mühendislik konusunda pek uzman değilim. "Bilgi özgür olmak için özlem" (alıntı bir yerde duydum).

2
Javascript doğuştan gelen bir savunmaya sahiptir: erişilemeyen sunucu tarafı koduna bağlıdır. Vurgulama bir plasebodur. Ayrıca, aldığınız hata raporlarını teşhis etmeyi zorlaştırır. Birisi sizi parçalayacaksa (ve JS kodunuzun değerini abarttığınızı düşünüyorsanız) fazla bir şey yapamazsınız

1
Ve söz konusu olan havalı numara neydi?

2
Aşağı oylar beni güldürüyor. Javascript en iyi sitenizi geliştirmek için bir yardımcı program olarak kullanılır. Korunmaya değer tek kod, sitenizin ve şirketinizin iç işleri hakkında bilgi veren koddur. Bunların hiçbiri başlangıçta müşteri senaryosuna ait değildir!

1
@Jim: bilmiyorum. Sayım şu anda 17 upvotes, 8 downvotes ve günlük temsilci olması nedeniyle bu cevabımdaki temsilcim ... -16.

14

Yapabileceğiniz en iyi şey, başkalarının değiştirmekte zorlanabilmesi için kodu şaşırtmaktır. Tabii ki, orijinalin bir kopyasını saklıyorsunuz.

Bir bonus olarak, gizlenmiş kod daha küçük olmalı ve bu nedenle yüklenmesi daha hızlı olmalıdır.


Buna Javascript minimizasyonu denir, değil mi?
Jonathan Leffler

4
aslında minyatür
Matt Briggs

9

Neden endişeleniyorsun? Bunun iki nedeni olabilir: 1) Ticari bir JavaScript kitaplığı yazıyorsunuz. Çözüm: Başka bir iş planı edinin, JavaScript kütüphaneleri ücretsiz olma eğilimindedir. Belki de işletmelerin küçük bir yerinde para kazanabilirsiniz, ancak büyük olasılıkla yasadışı kopyalanmış kodu kullanmayacaklardır.

2) Rakiplerinizin sitenizi kopyalayacağından endişe ediyorsunuz. Eğer yaparlarsa, onlardan her zaman bir adım önde olacağınızdan emin olabilirsiniz. Büyük olasılıkla, kendi kodlarını yazacaklar ve sitenizin görünümünü ve davranışını kopyalayacaklar ve aptal yazılım patentleri almak dışında hiçbir şey sizi kurtaramaz, örneğin amazon tek tıklamayla alışveriş.

IOW, endişelenme. İnsanlardan eşyalarınızı kullanıp kullanmadıklarını söylemelerini isteyen bir telif hakkı bildirimi koyun. Yeterli insan yaparsa, muhtemelen uzun vadede faydalı olacak, meraklılar arasında kredi almak için yararlı bir kütüphane oluşturduğunuz gerçeğini kullanın.


Bu bir web uygulaması, kütüphane değil :). # 2 için teşekkürler.

6

Hayır. İstemci tarafı bir komut dosyası yazma dilini "korumayı" denemeyin. Şaşkınlık işe yaramıyor. Küçültmenin faydaları vardır (ancak korsanlıkla mücadele bunlardan biri değildir )

Ben de tavsiye ederim karşı istek başına birkaç ekstra kilobayt dikkate değer bir farktır (ve sadece yapacağız gün, başına isabet binlerce almak sürece kodunuzu küçültmek olduğunu hepiniz sizi kurtaracak doğru kullandığınız görüntüleri sıkıştırmak kez çok daha fazla KB, kurulum düzgün önbellekleme vb.) ..

Javascript'i küçültüp küçümseseniz bile, insanlar yine de önemsiz bir şekilde kendi sitelerine kopyalayabilirler. Değiştirilmesi biraz daha zor olacak, ancak betiğin ne yaptığına bağlı olarak, bu önemli olmayabilir. Örneğin, bahsettiğimiz WMD Editörleri, kamu kullanımı için minimize edilmiştir.

Gizleme ve küçültme benzer olabilir, ancak kodu düzgün bir şekilde gizleyecek olsaydınız, anlaşılmasını zorlaştırmak için temelde büyük bölümlerini yeniden yazmanız gerekir. Bu, kodun daha karmaşık ve başa çıkmasını çok daha zorlaştırır ( siz), böylece hataları tanıtacaksınız .. Javascript'iniz buggy olursa, bu korsanlığı önleyecektir, çünkü kimse onu kullanmak (veya çalmak) istemeyecektir .. ama, err, bu iyi değil.

Javascript ile ilgili harika şeylerden biri, canlı, çalışma koduna bakarak herkesin sağ tıklayıp / görüntüleyebileceği ve Javascript'i öğrenebileceği .. Koda bakarak ve kopyalayan kişilerden endişe ediyorsanız, web / Javascript isn ' t doğru dil ..

Bilgileriniz (adınız, web siteniz) ve bir tür lisansla tüm .jsdosya ve <script>bloklarınızın başına bir yorum koymanızı öneririm . Kodun ne olduğuna bağlı olarak, "Bir projede bu kodun tamamını veya bir kısmını kullanırsanız, lütfen bana bildirin!" "Bu kodu başka hiçbir amaçla kullanmayın!" ifadesinden çok daha etkili olabilir.


4

Bunu caydırmak için kodu gizleyebilir (veya en azından minimize edebilirsiniz) (zamana sahip biri için durdurulamaz olsa da. Örneğin, StackOverflow'un WMD düzenleyicisinin deobfüzyonu (ancak bu iyi bir nedendi!)).

Gerçekten önyüz koyduğunuz herhangi bir kod herkese açık olacak ve herkesin görebileceği / kullanabileceği.


KİS editörü gizlenmedi, sadece küçültüldü.

JavaScript'i küçültmek de onu şaşırtmanın güzel bir yan etkisine sahiptir ... var va = fa (); hem de gizlenmiş.
Unkwntech

4

Neden hiç endişelenmiyorsun? Senaryolarınız çalmaya değerse, onları açık kaynak yapabilir ve honlama konusunda yardım alabilirsiniz.


Bunun ötesinde, onlar için potansiyel olarak kredi ve iyi PR alırsınız. Bunları sizin için geleneksel bir iş anlamında çalıştıramazsanız, başka şekillerde sizin için nasıl çalıştırabileceğinize bakın.
Jon Hopkins

4

Her zaman kaynak kodu biçiminde sunulan, yorumlanmış bir dil olduğu için gerçekten yapamazsınız. Korsan yeterince motive edilirse şaşkınlık bile pek yardımcı olmaz.

(Vaka-Örnek: Jeff ve Dana'nın sadece iyi niyetleri olduğunu bilsem de - sıkıca konuşabilen - StackOverflow WMD Editör Korsanlık olarak görülebilir)


4

Hayır. Hiç endişelenmemelisin.

İşletmeniz JavaScript kodunuzun gizliliğine bağlıysa, bununla ilgili ciddi bir sorun vardır.

Aksi takdirde, rahatsız etmeyin. Sayfaların daha hızlı yüklenmesini sağlamak için JavaScript kodunuzu simge durumuna küçültmeyi denemeniz gerekebilir.


3

Kullandığım GWT (Google Web Toolkit) kodu tüm Java ile yazılmış ve debug ve Java merkezli araçları ile test edilebilir, ancak serbest bırakılması için JavaScript dönüştürülür olduğu web uygulamaları, yazmak için.

Modda PRETTYveya DETAILEDmodda değilken, GWT tarafından üretilen JavaScript çok yüksek düzeyde optimize edilmiş ve gizlenmiştir, bu da tersine mühendislik için son derece pratik değildir. (Geleneksel bir JavaScript gizleme aracı bu avantajların bir bölümünü sağlar - ancak optimizasyonların GWT'nin ayrıntılı dal budaması ve kod yolu analizi yapma yeteneğine bağlı olduğu yerlerde değil).

Bununla birlikte, genel olarak, şaşkınlık konusunda -1'im - yani, meşru müşterilerin, geliştirme becerileri ve FireBug'un bir kopyası olduğunda bile sorunlarını çözmenize daha az yardımcı olabileceği anlamına gelir. Orijinal yazarsınız - kodu herkesten daha iyi biliyorsunuz ve bu size ucuz bir nakavt yapmaya çalışan birine göre rekabet avantajı sağlıyor; ayrıca, eğer böyle bir rakip gerçekte izinsiz çaldıkları bir şeyden gerçek para kazanıyorsa, bu da onları bir davada alınan paraya (ya da potansiyel olarak toplamı üç katına çıkararak) açar; meşru ve ciddi rekabet o rotaya gitmeyecek ve neden diğer tür için endişeleniyorsunuz?


2

Web uygulamamız için çok fazla Javascript (ve çok sayıda sunucu tarafı) kodu kullanıyoruz ve Javascripts'in beyaz boşlukları, satır sonlarını vb. Kaldırmayı "gizlemeyi" seçtik - bu gerçekten kodunuzu korumaz, ancak okumayı ve anlamayı çok zorlaştırırsınız ve büyük olasılıkla başkaları bu çabadan dolayı rahatsız etmeyecektir.

Ancak bunu yapmamızın nedeni, kodumuzun bazı bölümlerini kimsenin kopyalamasını istemediğimizden ziyade, kodu sunduğumuz iş ortaklarımızın / müşterilerimizin doğrudan "dosyalarımızda" ( bir sonraki güncelleme yüklendiğinde sorunlardan kaçının) ...

Not: Gizlemenin bilmeniz gereken bir dezavantajı vardır: bu kod kodunda hata ayıklamanız gerekirse, kendiniz gizli bilgi ile çalışamazsınız, bu nedenle her zaman 'okunabilir' dosyayı önce sunucu.


2
Bir editörde Javascript biçimlendirme veya çok çaba için "güzel yazıcı" bir tür kullanarak çağırmak olmaz. Bu şeyleri azaltmak, bant genişliğini azaltmak (yani küçültmek) için yararlı olabilir, ancak hepsi bu.

Javascript dosyası büyükse, çok çaba gerektirir. Ayrıca "tek yazıcılar tüm kodları içerir" dosya türlerinde "güzel yazıcılar" iyi çalışmıyor (veya hiç çalışmıyor).

1

Yeterince iyi bir javascriptin başkaları tarafından alınacağı varsayımına devam ederek, sadece akımla yüzmeye ve bundan en iyi şekilde yararlanmaya ne dersiniz?

Örneğin atıfta bulunulmasını gerektirirken kullanıma izin veren bir lisansı tokatlayın. Belki de gerekiyorsa, bazı Creative Commons varyantları gibi ticari olmayan bir maddeyle de.


1

Uygulama mantığınızın çoğu sunucu tarafı olmalıdır. Javascript yalnızca GUI öğelerini ve sunucu ile basit etkileşimleri işlemelidir. Javascript kodunuz, birinin çalması konusunda endişelendiğiniz yeterli uygulama mantığı içeriyorsa, muhtemelen yanlış bir şey yapıyorsunuzdur.


0

Ticari sırlarınız varsa, kodun en hassas kısımlarını ActionScript'e (Flash) taşıyabilirsiniz. Temel olarak JavaScript ile aynı dildir ve tokenleştirilmiş biçimde saklanır.


0

Kodunuzu çalmaya kararlı hardcore korsanları hakkında endişeleniyorsanız, üzgünüm, yapabileceğiniz hiçbir şey yok. Ancak sıradan hırsızlar için sakıncalı hale getirmenin yolları var. Bunu yapmak için bir nispeten kolay yolu kullanarak bazı parçaları yüklemektir XMLHttpRequestve eval()bunları; bu, JSON verilerini alan ve sayfayı doldurmak için kullanan bir şey olarak görünebilir (veya dahil edilebilir).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.