Web üzerinden şifreleri gönderme

3 Cevap php

Bu yüzden kullanıcıların web üzerinden kimlik doğrulaması için istediğiniz bir mobil platform uygulaması üzerinde çalışıyorum. Ben güvenlik yapmak için en iyi yolu merak edildi. Kullanıcı bir php sunucu wich HTTP için bir şifre gönderiyor aynı sunucuda mysql veritabanı karşı doğrular. Açıkçası ben internet üzerinden düz metin parola göndermek istemiyorum, ama ben de 2 SHA sağlamalarının yapmak istemiyorum.

Bu sunucu (pseudocode) gibi görünüyor ne

$pass = $_POST['pass'];

if ((get PASSWORD where USERNAME = USERNAME) == SHA($pass)) return PASS;

Bu oldukça standart ve bunu yapmak için başka bir yolu var sanmıyorum. Ama internet üzerinden göndermeden önce verileri hazırlamak nasıl merak ediyordum.

3 Cevap

Istemci uygulaması destekliyorsa, SSL kullanabilirsiniz.

Düzenli olmayan kritik sistem için en web siteleri bir HTTP POST isteği sırasında internet üzerinden düz metin parola göndermez. Şifre sonra SHA1/MD5 tarafından kodlanan ve veritabanındaki değeri karşı kontrol sunucu tarafı.

Ayrıca https basic authentication kullanabilirsiniz, bu basit bir algoritma ile şifreyi kodlar. Düz metin parola göndermek etmese, kodlama onu kırmak çok (çok!) kolay o kadar basit ki. Ama temel kimlik doğrulaması kullanarak, normal bir giriş formu kullanamıyorsanız, temel kimlik doğrulaması için destekleyen tarayıcılar ile yapmanız gerekir (değil çok kullanıcı dostu!).

Eğer daha fazla güvenlik ihtiyacınız varsa en web siteleri sadece bir ISP satın sunucu tarafında SSL sertifikası yüklemek (örneğin, godaddy). Bu mümkün size bir SSL şifreli bağlantı üzerinden komut giriş konum erişmek için yapacaktır. Bu çözelti (sürece parola tahmin etmek kolay ya da çalıntı değil gibi) güvenli olarak kabul edilir.

Bir diğer ilginç, ama nadir bir yaklaşım, sunucuya (Ajax) Mesajı isteği yapmadan önce JavaScript SHA1 kodlama yapmaktır (JS sha-1 example). Teorik olarak, bu oldukça makul güvenlik teslim olabilir ...

Bu tüm hala değilse ve yeterince client certificates ya da bir hesap ya da SMS ile cevap-zorluk sistemi yüklemeyi düşünebiliriz.

Pekka işaret ettiği gibi, SSL en iyi seçenektir.

Alternatif olarak, JavaScript SHA kullanarak oldukça kolay, hızlı, ve zaten yazılmıştı. Here's an example ve burada bir kütüphane bulunuyor: crypto.js