JavaScript Gizliliği nedir ve neden bir tehlikedir?


Yanıtlar:


38

Şaşırtma, javascript kodunuzun gerçek anlamını ve amacını "gizlemenin" bir yoludur. Bazı siteler, kodlarını kopyalamak / ödünç almak isteyen kişilerin önünde engel olarak kullanır. Diğer siteler bunu, kodun gerçek amacını gizlemek için bir araç olarak kullanır.

Bazı gizlilik biçimleri:

  1. Kodları daha az okunabilir ve anlaşılması zor hale getirmek için değişkenleri otomatik olarak kısa anlamsız adlarla yeniden adlandırın.
  2. Tüm boşlukları ve satırları keserek kodun kaldırılması çok uzun
  3. Kodun bir kısmını otomatik olarak üreterek, kodun ilk geçişi, amaçlanan işlemi gerçekleştirmek için çalışan gerçek kodu oluşturmak için çalışır.
  4. Çalışacak gerçek kodu oluşturmak için normal javascript kodundan ziyade eval ile birlikte karakter kodlarını ve string manipülasyonunu kullanır.

Müstehcenlik kendi başına kötü değildir, ama kötü bir niyeti gizlemeye çalışmak için kullanılabilir ve muhtemelen AVG'nin itiraz ettiği şey budur. Javascript'in engellemeye çalıştığı bir şeyi yapmayı denemekte olup olmadığını anlayamayacağı kadar belirsizdi. Bu nedenle, kodun normal göründüğünü doğrulayamadığından kodu varsayılan olarak güvensiz ilan etti.


Ben de öyle düşündüm ama doğrulamak istedim. Açıklama için teşekkürler.
L84

AVG, iyi bilinen ve saygın bir web sitesine erişimi engelliyorsa, muhtemelen geçersiz kılabilirsiniz. Siteleri temsilcisi bilmiyorsanız bunu tavsiye etmem.
uSlackr

4
Bazı siteler js sıkıştırmasını kullanır, böylece daha hızlı yüklenir (herkesin arasındadır), kod karışık görünecektir.
jcubic

9
1ve 2ayrıca javascript kompresörleri tarafından yapılır. Kompresörler, kodu yan etki olarak gizler, ancak bu onların ana amacı değildir; temel amacı javascript'i küçültmek, bant genişliğini azaltmaktır.
BlueRaja - Danny Pflughoeft

5. Aynı zamanda hızlı dosyaları indirmek için JS dosyalarını sıkıştırmak için kullanılır. Yahoo web’de olduklarından beri bunu yaptı ve Google’ın da web uygulamaları oluşturma araçları da yaptı (GMail ve Takvim gibi).
Chloe,

13

Şaşırtma, bir şeyin amaçlanan anlamını gizlemek anlamına gelir.

Bu durumda, açıkça okunabilir bir JavaScript pasajı, örneğin

window.onload = function() { alert("Hello " + username) };

ile ikame edilebilir

var _0xc5b2=["\x6F\x6E\x6C\x6F\x61\x64",
        "\x48\x65\x6C\x6C\x6F\x20"];window[_0xc5b2[0]]=
    function (){alert(_0xc5b2[1]+username);} ;

ya da

eval(unescape("var%20_0xc5b2%3D%5B%22onload%22%2C%22Hello%20%22%5D%3Bwindow"+
  "%5B_0xc5b2%5B0%5D%5D%3Dfunction%20%28%29%7Balert%28_0xc5b2%5B1%5D+username"+
  "%29%3B%7D%20%3B"));

Her üç kod parçacığı da aynı şeyi yapar, ancak yalnızca ilkini okumak niyetini kolayca anlamanıza olanak sağlar.

Görünüşe göre, AVG, yürütülmesine izin vermeden önce JavaScript kodunun amacını anlamaya çalışır. Kod gizlendiğinde, AVG muhtemelen başarısız olur. Dolayısıyla uyarı.

Olduğu söyleniyor, bazı web siteleri JavaScript'i kötü niyetlerden dolayı değil, işlerini çalmayı zorlaştırmaktan alıkoyuyor. Bu amaç için kullanılırsa şaşırtmaca genellikle işe yaramaz, ancak asıl nokta şaşırtmanın mutlaka kötü niyet anlamına gelmediğidir.


3
Sık sık bulmuş olduğum halde, deobfusticating kodu sıklıkla bana kötü kodlanmış bir javascript çalmaya değmediğini gösterdi. Programcının hırsızlık için endişelenmek için uygun programlama tekniğinden daha fazla zaman harcadığının ve engellemeyi doğru alamadığından, kolayca kırılabildiğinin bir işaretidir. Kodları deobficateicate yapmak için zorlayan tek kişi kötü amaçlı yazılım programcılarıdır, bu yüzden AVG bu siteden kaçınmak için gerçekten iyi bir neden olarak işaretler.
Fiasco Labs,

2
AVG bir insan değil bir makinedir. Açıkçası, bir makine kodu anlayabilir, bu da o kodun aynı şeyi yapmasıdır. Dahası, insanlar genellikle sörf yaparken Javascript'e bakmazlar. Bu sadece "dernek tarafından suçluluk" durumudur. Tehlikeli bazı Javascript bazı şaşırtma kalıplarını kullanır. Bu nedenle, benzer desenlere sahip diğer Javascript şüphelidir.
Kaz

@Kaz: Bu sadece bir örnekti, ancak anlaşılması gereken bir JavaScript motorunu gerektiren daha karmaşık bir gizleme yöntemleri vardı. Kötü amaçlı yazılım tarayıcıları, performans nedenleriyle genellikle komut dosyalarını çalıştırmak yerine belirli kalıpları arar.
Dennis,

teorik olarak değersiz ve pratik olarak değersiz olmak farklıdır - teorik olarak, engelleyici kodun bir faydası yoktur. Ancak deobüsleme maliyeti yeni kod oluşturma maliyetine benziyorsa (veya hatta tembel hırsızları caydırmak için maliyet de yüksekse), hırsızlık riskini önlemek için gizleme yararlı olabilir.
Ronald,

Tam olarak, sorun ne ise, kendi başına şaşırtma değil, kodun bilinen kötü amaçlı kodlara benzerliği.
Kaz
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.