Php Session'da Şifre Tutmak Gerekli Mi?
-
tolgasen bunu yazdı
Beni hatırla olayında cookiede kullanıcı adını ve şifrenin MD5'li halini tutman yeterli. Daha sonra kullanıcı siteye girdiğinde cookiede kullanıcı adı ve şifre varsa tüm kodların başlangıcında login yaptırabilirsin. Tokenle vs uğraşmana gerek yok.
Hocam uğraşmak istememin sebebi kullanıcı güvenliğini sağlamak. Cookie de şifre saklamak şifresiz girişleri önleyebilir fakat kullanıcının cookie si çalındığı zaman bir işe yaramaz, kullanıcı hesabının çalındığını bile anlamaz.
Bundan dolayı az önce bahsettigime benzer bir şey yapmalı. Ekstra olarak orada bahsettiğim probleme de çözüm buldum:
Kullanıcı beni hatırla ile giriş yapar; user id/token1/token2 cookie ve bir database de tutulur; kullanıcı tekrar geldiğinde her 3ü doğru mevcut ise giriş yapılır token2 değiştirilir; token 2 her başarılı girişte değişir; 3ü de yanlış ise giriş yapılmaz; fakat 2 si doğru ise bu bir atak olarak kabul edilir giriş yapılmaz tüm o token verisi silinir ve kullanıcı bilgilendirilir.
kofcu tarafından 06/May/16 08:48 tarihinde düzenlenmiştir -
MD5'i unutun. Kullanılması önerilmeyen hash algoritması. Benzersizliğinden emin olamazsınız. https://crypto.stackexchange.com/questions/1434/are-there-two-known-strings-which-have-the-same-md5-hash-value
Session olayı biraz daha farklı görünenden. Şunlara dikkat etmek gerekir:
Session fixation güvenlik açığına neden olur: https://www.owasp.org/index.php/Session_fixation Her istekte session_id'yi değiştirmelisiniz.
SSL kullanmadan yapılan her login girişimi "kullanıcı adı ve şifre şifresiz olarak (plain text) sunucuya iletileceğinden" potansiyel güvenlik açığı oluşturur. SSL kullanın.
Session üzerindeki her işlem, sunucunun I/O performansına bağlıdır ve fazla sayıda dosya işlem çağrısı gerektirir. Her şeyi session'a bağlamayın.
Ayrıca:
Cookie'de fazla bir şey tutmayın. Cookieler kullanıcı tarafındadır, her istek ve cevapta http'nin başlık (header) kısmında yollanır. Sizin sunucu bunu parçalar, değişiklik yapar, tekrar paketleyip yollar vs.
https://paragonie.com/blog/2015/04/secure-authentication-php-with-long-term-persistence
-
XSS nedir? Yenir mi?
-
kofcu bunu yazdıtolgasen bunu yazdı
Beni hatırla olayında cookiede kullanıcı adını ve şifrenin MD5'li halini tutman yeterli. Daha sonra kullanıcı siteye girdiğinde cookiede kullanıcı adı ve şifre varsa tüm kodların başlangıcında login yaptırabilirsin. Tokenle vs uğraşmana gerek yok.
Hocam uğraşmak istememin sebebi kullanıcı güvenliğini sağlamak. Cookie de şifre saklamak şifresiz girişleri önleyebilir fakat kullanıcının cookie si çalındığı zaman bir işe yaramaz, kullanıcı hesabının çalındığını bile anlamaz.
Bundan dolayı az önce bahsettigime benzer bir şey yapmalı. Ekstra olarak orada bahsettiğim probleme de çözüm buldum:
Kullanıcı beni hatırla ile giriş yapar; user id/token1/token2 cookie ve bir database de tutulur; kullanıcı tekrar geldiğinde her 3ü doğru mevcut ise giriş yapılır token2 değiştirilir; token 2 her başarılı girişte değişir; 3ü de yanlış ise giriş yapılmaz; fakat 2 si doğru ise bu bir atak olarak kabul edilir giriş yapılmaz tüm o token verisi silinir ve kullanıcı bilgilendirilir.
Cookie calinirsa ne yaparsan yap kullanici bilgilerini kaybeder. Sadece phpsessionid çalınması yeterlidir ve o zaten default atanır sunucu tarafından.