Yaratma Güçlü Benzersiz kullanıcı kimliklerinin w / PHP &

4 Cevap php

Ahoy yığın taşması! Bu ilk yazı mai edilecek ...

I'm attempting to identify users with a salted unique public key.

  1. Algorithm - Ben (uniqid kullanmalı mıyım), sha256, sha512, başka bir şey? Tüm sağlamalarının tuzlu olacaktır. NIST SHA256 tavsiye, ama diğerleri önerebiliriz ne duymak tercih.
  2. Generation - Does hash(SALT + AUTO_INCREMENT_PK + CREATED_TIMESTAMP) suffice? More entropy?
    • Her kullanıcı için benzersiz olduğu gibi, e-posta kullanmak istiyorum, ancak kullanıcı kendi e-posta adresini değiştirebilirsiniz. Ben de sağlamalarının yeniden hesaplanacak olmazdı böylece signup_email depolama düşündüğünü.
  3. MySQL Storage - Currently, our ID's are INT(255) auto_increment birincil anahtar ait. Daha önce belirtildiği gibi, potansiyel tuşları yüz milyonlarca. Kripto algo bağlı olarak, bir sabit boyutlu kimliği olmalıdır. I (255) INT tutabilir ya da ben CHAR (n) kullanmalıyım?

---------------------- Thanks for reading :) -------------------------------

4 Cevap

Bir şey: GET veya POST işe yaramaz onları göndererek, onların kimlikleri ile kullanıcılara güven yoksa; Bu bütün motive kullanıcılar görebilir.


Ben bir salt.counter.time dize kullanarak SHA256 kullanın ve gerçek kimliği için Guıd oluşturmak için çıkışını kullanabilirsiniz. Bu çarpışmalar için olasılığını en aza indirecektir.

Sen MySQL GUID'lerini saklamak için CHAR kullanmak zorunda olacak.

Daha derinlemesine bilgi için http://us2.php.net/manual/en/function.uniqid.php de açıklamalara bakınız. Eğer sahte ona biraz var yani AFAIK GUID PHP çekirdeğinin parçası değildir.

Eğer bir kullanıcı, bir kullanıcı "tahminlerin" başka bir kullanıcı kimliği varsa, servis ile bir şey yapmak için izin vermek için bir yol olarak kullanıcı kimliği kullanarak yapıyorsanız, o bu kişinin hesabına ne isterse yapmak mümkün olacak?

Bunu birlikte gitmek için başka bir şifre ya da bir şey her türlü yok?


Well, in that case, you need something quite unique, don't you ;-)
(Hoping I understood the question well -- but that might not be the case -- sorry, if it isn't)

What do you think of using Globally Unique Identifier (like, for instance, 61350955-9755-4AF3-8C19-6DBC42CA69E2) for your users ?
For an example of how they look like, take a look at http://createguid.com/


As a sidenote, that GUID is quite long ; which means lots of bytes in your DB, if you have millions users... So, it probably shouldn't be used as any kind of primary/foreign key.

Ne ki bir uygulamanın birçok yerde çoğaltılamaz olacak gibi birincil / yabancı anahtar olarak olası en küçük tamsayı (ki sana sahip olacağım kullanıcı sayısını uyuyor), kullanma hakkında; ve sadece "uzun bir kullanıcı kimliği" kullanıcı tablo, sadece bir kez kaydettikten?

Bir kullanarak içine baktım UUID?

Hızlı google search bazı iyi kaynaklar / bağlantıları verir.

Şahsen ben md5 32 karakter tanımlayıcı tahmin etmek son derece zordur (128 bit onaltılık sayı) yaratacaktır (uniqid (mt_rand (), true)) kullanın.