Istemcide javascript dosyaları bütünlüğünü doğrulamak için bir yolu var mı?

7 Cevap php

Ben SSL / TLS olmayan php kullanarak kullanıcı kayıt ve kimlik doğrulama güvenli bir yöntem olmayı hedeflemektedir ne üzerinde çalışıyor ve javascript ama değilim.

Ben bu çok önce 1000 kere denendi imkansız bir görev olarak kabul edilebilir farkında ama ben yine de bir gitmek vermek için gidiyorum. Ben bunu iddia çevrimiçi görmek Her örnek bazı büyük ölümcül kusur var gibi görünüyor!

Her neyse, benim şimdiki problem istemcide javascript doğruluyor. Sorun javascript benim sha1 uygulaması bazı man-in-the-middle tarafından değiştirilirse bu hiç güvenli değil varlık. Ben sadece alınan javascript tahrif edilmediğini doğrulamak olabilir o zaman ben bu çekin düşünüyorum.

Gerçek bir sorun olsa, istemci tarafında şeyler yapmak için tek yol javascript olmasıdır. Basit: Diğer javascript dosyaları bütünlüğünü doğrulamak için bir javascript yazmak. Hayır! Man-in-the-orta sadece çok bu dosyayı değiştirebilirsiniz.

Bu etrafında bir yolu var mı?

7 Cevap

Lütfen JavaScript korumak için, bir garanti Untampered ortamda bunu incelemek gerekir. Eğer tarayıcıda böyle bir ortam oluşturmak olamaz çünkü bu mümkün değildir. En iyi seçenek, HTTPS üzerinden JavaScript indirmektir. Bu güvenli ama daha iyi değildir. Olası saldırı vektörleri sol:

  • Bir virüs her sayfa için bazı kötü niyetli JavaScript yüklemek için tarayıcıyı değiştirebilirsiniz
  • Bir keylogger kullanıcı yazmaya ne izleyebilirsiniz
  • Bir vekil bir man-in-the-orta bir HTTPS bağlantısı gibi hareket edebilir. Proxy aslında HTTPS üzerinden göndermek ne çözmek ve tarayıcı için (farklı bir sertifika ile) tekrar kodlamak olacak.
  • Bir vekil göndermek sayfalara iframe ekleyebilirsiniz

JavaScript ile bir (örneğin dinlemelerini WiFi trafiği gibi) pasif ağ saldırılarına karşı korumak, ancak saldırganın HTTP yanıt başlığı ve gövde verileri kontrol edebilen etkin ağ saldırılarına karşı kendinizi korumak olamaz.

Eğer SSL sertifikası için ödemek istemiyorsanız, bunun yerine bir kendinden imzalı bir sertifika oluşturabilirsiniz. Ancak, bu sadece pasif ağ saldırıları önlemek, ama hiç oluşturmak bazı hacky JavaScript uygulamaları çok daha kolay olacaktır.

Esasen etkin ağ saldırılarına (ortasında bir adam) önlemek için bir CA imzalı SSL sertifikası gerekir.

Sadece istemci eğer Javascript dosyaların bütünlüğünü doğrulamak, ve sadece, eğer sunucu ve istemci daha önce bir sır paylaşıyoruz. İşte en sık internette böyle değil. Bu tür gizli mevcut değilse, o zaman transfer Javascript'i doğrulamak için herhangi bir girişim kırılabilir. Bu bir yakalama 22 durumdur.

Çoğu zaman, insanlar onlar istemci tarafında güvenlik kontrolleri devredebilir gibi onları hissettiriyor çünkü JS bütünlüğünü sağlamak istiyoruz. Güven asla uzak kullanıcı girişi: şifrelemede, kırık olmamalı temel bir kural vardır. Her zaman çift-kontrol.

SSL / TLS ulaşmak için orta adam saldırıları sert yapabilir, ama su geçirmez değildir.

Çevresinde hiçbir yolu yoktur. Eğer dediği gibi: Eğer kaynağı bir man-in-the-middle saldırganın can istemci, yani her şey müşteri yorumlayan ve yürütür alır bir şey değiştirmek doğrulamak edemez.

Eğer tek sorun bir SHA1 gerçekleştirmek için kullanmak javascript değiştirerek ortasında bir adam olduğunu söylüyorlar. Ben bu nedenle giriş için kullanıcı adı + şifre SHA1 kullanıyor sanırım ....

Bu bile Javascript kurcalama ile tamamen güvensiz. Javascript değiştirilmiş değilse ortada bir adam düz şifreyi bilmiyor olsa bile, o karma bilecek, ve o mükemmel sadece bunu tekrarlayarak kendi başına bir giriş yapmak için bu karma kullanabilirsiniz.

Bir tuz / seferlik dahil olsa bile, ortada adam hala anda bu simgeleri kullanmak ve hatta bir şifre / e-posta değişikliğini gerçekleştirerek hesap çalmak mümkün olabilir.

Hatta bu görmezden, ve sen aslında çevresindeki tüm o olsun + aslında ikinci bir javascript bütünlüğünü test etmek için bir javascript alabilir varsayarak, nasıl engel olacağını da tahrif olmaktan "doğrulama script"? Sen tüm mükemmel tahrif ediliyor (... ve yinelemeli hiç bir senaryonun bütünlüğünü denetleyen bir komut dosyası bütünlüğünü denetleyen bir komut olması için gidebiliriz) gibi verilerin güvenliğini sağlamak için güvenli olmayan bir kanal üzerinden gönderilen bir komut bağlı tutmak güvensiz bir kanal üzerinden gönderilir beri.

Bunu yapmanın tek yolu bazı istemci tarafı ekstralar (Bir Firefox eklentisi / ActiveX uzatma), ama sadece saçma https için doğal destek olan hangi, http üstüne kendinize güvenli bir kanal inşa edebilmek olacaktır.

onlar istemci olduğu gibi bunları erişemezsiniz.

Bu web sayfalarının niteliği ...

sunucu tarafında önemli şeyler kullanmayı deneyin ...

Güvenlik mimarisi bir şekilde JavaScript çalışmasına işlevleri gerektiriyorsa, o zaman güvenlik kusurludur.