PHP 사용자가 로그인 시 주의할 점은 무엇인가요?
비밀번호는 MD5(비밀번호 + 문자열)를 사용하여 암호화해야 합니다.
테이블 필드 노출을 방지하려면 로그인 양식의 이름이 데이터베이스 필드와 동일해서는 안 됩니다.
사용자 테이블의 테이블 이름, 필드 이름, 비밀번호는 추측하기 어려워야 합니다.
무차별 대입 크래킹을 방지하려면 인증 코드를 사용하여 로그인을 확인하세요.
제출된 데이터가 이 웹사이트에서 가져온 것인지 확인하세요. (추천 학습: PHP 프로그래밍 입문부터 숙련까지 )
로그인 백그라운드 처리 코드의 데이터베이스 부분은 전처리 및 필터링을 사용하여 방지합니다. SQL 주입.
예: 인증 처리, 이메일 확인, 계정 업데이트(비밀번호, 이메일) 등을 처리해야 합니다.
<?php function user_change_email ($password1,$new_email,$user_name) { global $feedback,$hidden_hash_var; if (validate_email($new_email)) { $hash=md5($new_email.$hidden_hash_var); file://改变数据库中确认用的无序码值,但不改变email file://发出一个带有新认证码的确认email $user_name=strtolower($user_name); $password1=strtolower($password1); $sql="UPDATE user SET confirm_hash='$hash' WHERE user_name='$user_name' AND password='". md5($password1) ."'"; $result=db_query($sql); if (!$result || db_affected_rows($result) < 1) { $feedback .= ' ERROR - Incorrect User Name Or Password '; return false; } else { $feedback .= ' Confirmation Sent '; user_send_confirm_email($new_email,$hash); return true; } } else { $feedback .= ' New Email Address Appears Invalid '; return false; } } function user_confirm($hash,$email) { /* 用户点击认证email的相关连接时,连到一个确认的页面,该页面会调用这个函数, */ global $feedback,$hidden_hash_var; file://verify that they didn't tamper with the email address $new_hash=md5($email.$hidden_hash_var); if ($new_hash && ($new_hash==$hash)) { file://在数据库中找出这个记录 $sql="SELECT * FROM user WHERE confirm_hash='$hash'"; $result=db_query($sql); if (!$result || db_numrows($result) < 1) { $feedback .= ' ERROR - Hash Not Found '; return false; } else { file://确认email,并且设置帐号为已经激活 $feedback .= ' User Account Updated - You Are Now Logged In '; user_set_tokens(db_result($result,0,'user_name')); $sql="UPDATE user SET email='$email',is_confirmed='1' WHERE confirm_hash='$hash'"; $result=db_query($sql); return true; } } else { $feedback .= ' HASH INVALID - UPDATE FAILED '; return false; } } function user_send_confirm_email($email,$hash) { /* 这个函数在首次注册或者改变email地址时使用 */ $message = "Thank You For Registering at Company.com". " Simply follow this link to confirm your registration: ". " http://www.company.com/account/confirm.php?hash=$hash&email=". urlencode($email). " Once you confirm, you can use the services on PHPBuilder."; mail ($email,'Registration Confirmation',$message,'From: noreply@company.com'); } ?>
아마도 우리는 이 방법을 사용자 인증에 사용하지 않고 세션 및 기타 방법을 사용하지만 이 기사에서는 여전히 암호화 및 확인 방법을 알려줍니다.
위 내용은 PHP 사용자가 로그인할 때 주의해야 할 점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!