AJAX kullanarak bir düz metin parola göndermek için ne kadar güvenli?

13 Cevap php

Belki başlık kötü phrased ama bunu söylemenin daha iyi bir yol düşünemiyorum.

Ben şu an (resmi bir şey, sadece deneme) bir giriş sistemi üzerinde çalışıyorum ve bazı özellikler için PHPLiveX (AJAX kütüphanesi) kullanarak planlama. Temelde sonra JavaScript aracılığıyla adlandırılan bazı PHP işlevleri oluşturabilir. Sen PHP işlevine aktarılır javascript parametreleri (getElementById) ekleyebilirsiniz.

Ne ben gerçekten bilmek istedim sadece PHP işlevi bunu (bu durumda SHA256) şifrelemek icar sonra, ilk olarak parolayı şifrelemek olmadan javascript işlevini çağırmak güvenli olup olmadığıdır. AJAX ile transfer veriler ele geçirilebilir? Eğer öyleyse bu nasıl olasıdır?

Teşekkürler

13 Cevap

Hayır daha fazla veya daha az güvenli (bir <form> den olduğu gibi) bir tarayıcı tarafından verilen normal bir HTTP POST isteği daha

SSL kullanımı - Bunun için "düzeltme" aynı olmayan-AJAX istekleri için "düzeltme" dir.

Diğerleri de söylediğim gibi, bir formdan bir HTTP post gönderme daha fazla güvenlidir. (Aslında, aynı şey.)

HTTPs bir seçenek değil ama eğer her zaman şifresiz bir bağlantı üzerinden bir sınama / yanıt şemasını kullanabilirsiniz.

Temelde bu gibi çalışır:

Server has a SHA (or whatever hashing algorithm you prefer) hash of the user's password.
Client has the password. Client requests (using unencrypted AJAX) the server send a challenge (Some random string of bytes. Characters are fine.)
Server creates a challenge and a challenge id and saves it with an expiration.
Client recieves a challenge and a challenge id.
Client hashes the password using SHA.
Client hashes the resulting hash with the challenge appended in some way.
Client sends the challenge id (Not the challenge itself) and the second resulting hash.
Server looks up challenge using ID if it exists and hasn't expired.
Server appends the challenge to the stored password hash and creates a hash using the same scheme as the client.
Server compares it's hash with the client if it's the same the user is authenticated.

Bu fikir olsun kez kurmak için aslında oldukça basit. Wikipedia üzerine bazı ek bilgiler var.

EDIT: Ben kimlik doğrulaması must olursa olsun meydan silmek başarılı olup olmadığını, söylemeyi unutmuşum fark ettim. Bir meydan istemci birden girişimleri verilmesi güvenlik sorunları neden olabilir.

AJAX yoluyla veya normal formu aracılığıyla şifreyi göndererek olup olmadığını, yine bir HTTP POST (umarım) isteği ile gönderilir. Yani ekleme ya da bilge bir şey güvenliği çıkarmadan değildir.

Şifrenizi ele geçirmesini birisi önlemek için tek yolu (AJAX ile veya değil) SSL kullanarak gereğidir.

Bu SSL yapmak orada hemen hemen tüm forumlar gibi, tel üzerinden gönderilir güvenli değil bir giriş formu olan kadar güvenli!

AJAX çağrı hedef güvenilir bir HTTPS :/ / sayfası ve diğer herhangi bir uygulamanın geri kalanı yaptığını aynı bilgileri gönderir gibi her bit kadar güvenli yaptık emin olun. Çoğu kütüphane / çerçeveler sadece HTTP :/ / AJAX aramalar için sınırı yoktur.

Evet okunabilir. Sadece güvenlik katmanı çeşit olmadan her şey gibi (SSL bak)

Eğer AJAX komutları gibi kendiniz WireShark gibi bir aracı çalıştırmak için, bkz.

Nasıl olasılıkla? Değil çok, ama kullanıcının parola muhtemelen düz metin olarak kişinin günlük dosyalarına kaydedilir. Birisi sonunda buldum, o zaman kötü bir haber olabilir. Geri üniversitede, benim ağ sınıfı, bazı (yarı) fantezi yönlendiriciler erişimi vardı. Biz rastgele web sitelerinde hesaplar için kaydoldum atamaları vardı. Biz bunu, biz yönlendiriciler log dosyaları üzerinde bazı çok korkutucu şeyler fark ettim. Bu bana her iletişim izlenir ve büyük olasılıkla bir yere kaydediliyor nasıl düşünmek için bir göz açıcı oldu.

AJAX çağrıları sadece düz HTTP isteği vardır.

Bu sıradan bir HTTP isteği gibi davranır ve aynı zamanda tüm avantaj ve dezavantaj ile birlikte gelir. Bu daha güvenli değildir.

AJAX güvenli arama yapmak için deneyebileceğiniz birkaç yolu vardır:

  1. SSL kullanın. SSL kullanıcı ve sunucu arasındaki mesajları şifrelemek olacaktır. SSL dezavantajı geçerli bir SSL sertifikaları için ek ücret ödemek zorunda olmasıdır. Kullanılabilir ise geçersiz SSL sertifikaları, kullanıcılara güvenlik garantisi aynı düzeyde sağlamaz.
  2. Gönderilmeden önce şifrelemek istekleri, istemci tarafı. Örn: ağ üzerinden gönderilmeden önce karma kullanıcıların şifre. Çoğu zaman, zaten kullanıcıların düz metin parola gerekmez. Kullanıcıların istemci tarafı komut dosyası çalıştırmak için izin vermez bu kullanışlı değildir.
  3. Ve dışında POST GET daha güvenli ortak yanıltıcı bilgilerle, o değil. Hem saldırganların görmek için eşit açıktır.

Siz açık olarak göndererek, bu nedenle koklama / dinleme / etc müşterinin ağı ile herkesin kolayca şifreyi görmek mümkün olacak. AJAX çağrısı sadece düz eski HTTP mesajdır. Eğer, Bu eylemi görmek wireshark bir kopyasını kadar yangın ve isteği kendinize yapmak istiyorsanız. Sen HTTP paketindeki şifreyi görmek mümkün olacak.

Daha önce de belirtildiği gibi, SSL burada en iyi çözümdür. Ancak, istemci tarafında parola hash olabilir. Bunun için google varsa, md5 javascript uygulamaları bol bulabilirsiniz.

Bu güvenli değil. Şifrelenmemiş parolalar göndermeyin. Bu size büyük bir sorun olacak bir noktada ele olacağı çok olasıdır.

Burada bir telnet şifresini yakalayan bir video örnektir. Telnet düz metin gönderir ve bu güzel hatta bu yaptığını düşünüyorum eğer varsa büyük sorunu göstermektedir. Herhangi iki bit script kiddie hızlı bunu yapabilirsiniz daha bir düz metin parola dolanabilir "Aman Aman, nereye benim veritabanı nereye gitti?"

Aynı şifre normal bir HTTP posta yoluyla iletilen AJAX yoluyla iletilen düz metin parola olarak güvenli olacaktır. Bu AJAX HTTP kullanır ve bu nedenle yakalanan ve kokladı olabilir söylemektir. Yapabileceğiniz en iyi şey HTTPS (SSL) kullanmaktır.

Daha AJAX ve güvenlik okumak için ben aşağıdaki okumaları tavsiye ederim

lanet siz beni endişelendiriyor. SSL arp zehirlenmesi MITM saldırıya karşı koruma sağlamaz. Eğer çocuklar gibi ibadet SSL için ölümcül olacaktır. Bu bile bir hop yapar ya da başka hatta bir acemi korsan düz metin parola kesmek mümkün olacak önce istemci tarafında şifre şifrelemek için bir yol olmalı

Ajax kullanan bir uygulama oluşturulurken Bir de olası güvenlik açıkları çok farkında olmalıdır.

Aşağıdaki site Ajax ve XSS getirmedi veya XSRF Saldırıları http://www.isecpartners.com/files/isec-attacking_ajax_applications.bh2006.pdf bazı gerçekten iyi bilgi vardır

Bir javascript çağrısına uzak bir işlev erişilebilir yaptığınızda, bir kullanıcı sadece işlev çağrısı tahmin ve onun / onun emirlerini yapmak için değiştirmek olabilir unutmayın.