Bir kullanıcının tarayıcısında kodumu düzenlemesini nasıl önleyebilirim?


11

Açıklama

Bir Node.JS uygulaması tasarlıyorum (tam bir web sitesi gibi). Uygulama beş JavaScript dosyası gönderecek ve <script>bunları birbirine bağlayan etiketlere sahip olacak .

Soru

Kullanıcıların ve saldırganların kodumu izlemesini ve düzenlemesini nasıl önleyebilirim ?

  • Örnek olarak şunlar verilebilir:

    • Ctrl+ Shift+I

    • In DevTools'un , git Kaynaklar , düzenleme (yani bir dosya seçmek index.html) ve yazma düzenlemeleri

    • Basmak Ctrl+ Sneden olacaktır Canlı düzenleme oluşmaya

Yukarıdaki örneğin olmasını önlemek istiyorum ... Bu mümkün mü?


İşte düşündüğüm şey:

Bir başka istemci tarafı JavaScript dosyası oluşturacağım, prevent_keys.js

Bunun için dinleyecek Ctrl+ Shift+ I.

Eğer geri dönerse true(yani tuşlara basılmışsa), logtuşlar olacaktır .

Ancak bu kullanıcının Devtools'u doğrudan kullanmasını engellemez.


16
Kimsenin tarayıcıda çalışan javascriptinizi görmesini veya değiştirmesini engelleyemezsiniz. Yapamam.
jfriend00

7
Bir sorunun cevabının “Yapamazsınız” olması, bunun aşağıya indirilmesi gerektiği anlamına gelmez.
RubberDuck

1
Çok yakından ilgili bir soru: JavaScript yalnızca AJAX formunda doğrulama gerçekleştirir . Özellikle , bir web tarayıcısından gelmese bile, sunucunuza, istemcinizden gelenle aynı görünen bir POST çağrısının nasıl gönderileceğine dair önemsiz örneği ile kabul edilen yanıtı kontrol edin .
8bittree

Yanıtlar:


35

Kullanıcıların, gönderdiğiniz içeriklere erişmesini ve bunları değiştirmesini tam anlamıyla engelleyemezsiniz. Tarayıcı üzerinde veya hangi tarayıcıyı kullandıkları veya aslında kaynak kodunuzu bir tarayıcı aracılığıyla indirip indirmedikleri konusunda hiçbir kontrolünüz yoktur. Kodunuzu başka bir kişinin cihazında yürütüyorsunuz. Bu cihazın bütünlüğü hakkında hiçbir şey varsaymamalısınız ve kabul edemezsiniz.

Açıklamak istemediğiniz bir kodunuz varsa, tarayıcıya göndermeyin. Bunun yerine, tarayıcının gizli kodu yürüttüğünüz bir sunucuya istek göndermesine izin verin.

Somut bir örnek olarak, istemcideki şifreleri kontrol etmeyin. İstemci, sunucuya her zaman “parolanın doğru olduğunu” bildirecek şekilde değiştirilebilir. Bunun yerine, güvenilir sunucunuzda kimlik doğrulaması yapılmalıdır.


4
"İstemci, sunucuya her zaman" parolanın doğru olduğunu "söyleyecek şekilde değiştirilebilir." öksürük libssh öksürük
Philip Kendall

Çok teşekkürler! Giriş, çıkış ve kayıt için işleyicileri gönderiyordum. Sunucudaki yollara değiştirdim.
Edwin Pratt

23

Yapamazsın. Bilgisayarın temel kurallarından biri: istemciye güvenemezsiniz . Ne düşünürseniz düşünün, müşterinin kontrolünü elimde tutursam bunu yapabilirim.


2
Tüm doğrulama, yükleme, indirme, userAccouts () işleyicilerini sunucunun içerisine taşıdım.
Edwin Pratt

1
"Müşteriye güvenemezsin" madalyonun sadece bir yüzü. Diğer taraf: "Müşterinin sahibi değilsiniz" diyor. Javascript'inizi çalıştıran tarayıcı sizin değil, tarayıcıyı çalıştıran işletim sistemi sizin değil ve tarayıcının üzerinde çalıştığı donanım sizin değil. Bu öğelerin sahibi, onlara gönderdiğiniz verilerle ne yaparsa yapın , işinizin hiçbiri değildir . Müşterilerinizin eşyalarını gasp etmeye çalışmamaları bir saygı meselesidir.
cmaster - reinstate monica

2

Kodun neden değiştirilmesini istemiyorsunuz?

Güvenlik? Güven? Meslek sırrı?

Ardından kodu göndermeyin, istemciden istek göndermesini sağlayın ve bir sonuç döndürün. Özel veya ayrıcalıklı bir sonuç olmayabilir, sadece bir çok kullanıcı arayüzü için bir işlem yeterlidir.

Kendi kodunuzun biraz değiştirilmiş sürümleri alt satırınıza zarar veriyor mu?

Bir kod gizleyici, ad yöneticisi ve önemsiz kod bölümleri kullanın.

Bu teknikler, gerçek beceri düzeyi ve web sitenizin hafif bir varyantı yapmak için gerekli araç çubuğunu artırır. Sadece bu tekniklerin kodunuzu yavaşlatabileceğini, ilginç ve anlamsız hatalar ve hata mesajları sunabileceğini ve yine de doğru araçlara ve / veya becerilere sahip bir kişi tarafından aşılabileceğini unutmayın. Gerçekten buna değer olup olmadığını düşünün. Günün sonunda herkes aslında aynı kodu yazabiliyordu.

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.