Ben giriş için e-posta kullanan biri için bir "kullanıcı adı / parola" sisteminden taşıma sürecinde yaşıyorum. Ben giriş için e-posta veya kullanıcı adı ya da izin ile herhangi korkunç sorun olduğunu sanmıyorum, ve ben de bunu yaparken biraz saygın dikkate siteleri gördüğümü hatırlıyorum, ama ben olabilir herhangi bir büyük güvenlik açıkları haberdar olmak istiyorum tanıtan.
Daha spesifik olarak, burada ilgili fonksiyon (işlev query_row sql parameterizes) 'dir.
function authenticate($p_user, $p_pass) {
$user = (string)$p_user;
$pass = (string)$p_pass;
$returnValue = false;
if ($user != '' && $pass != '') {
// Allow login via username or email.
$sql = "SELECT account_id, account_identity, uname, player_id
FROM accounts
JOIN account_players ON account_id=_account_id
JOIN players ON player_id = _player_id
WHERE lower(account_identity) = lower(:login)
OR lower(uname) = lower(:login)
AND phash = crypt(:pass, phash)";
$returnValue = query_row($sql, array(':login'=>$user, ':pass'=>$pass));
}
return $returnValue;
}
Özellikle, ben oturum açma işlemi için kendi e-posta kullanmaya olmayacak kullanıcılar için zarif geriye dönük uyumluluğu sağlamak için WHERE lower(account_identity) = lower(:login) OR lower(uname) = lower(:login) ...etc
bölümü ekledik. O OR
olsa, güvenli olduğundan tam olarak emin değilim. Ben yukarıda php kod güvenliğini sıkın gereken bazı yolları var mı?