나는 password_verify()를 작동 시키려고 밤새도록 50 개 이상의 링크를 심각하게 통과 했으므로이 질문을 가볍게 묻지 않았다.PHP password_verify()
1- 해시가 100 % 맞습니다.
2- 일반 텍스트 Verison은 100 % 정확합니다.
해시 길이가 사실임 60.
4- 시도 암호 설명 및 암호 _Bcrypt
5 데이터베이스에서 암호를 성공적으로 가져 왔습니다.
if(password_verify($answer,$secAnswer)){ } IS ALWAYS false.
하지만
다음은 내 코드입니다.function anti_injection_login($sql, $formUse = true){
$sql = preg_replace("/(from|select|insert|delete|where|drop table|show tables|,|'|#|\*|--|\\\\)/i","",$sql);
$sql = trim($sql);
$sql = strip_tags($sql);
if(!$formUse || !get_magic_quotes_gpc())
$sql = addslashes($sql);
return $sql;
}
$email = anti_injection_login($_POST['email']);
$answer = anti_injection_login($_POST['answer']);
$queryAccount = mysqli_query($conn, "SELECT * FROM Accounts where email= '$email'");
$count = mysqli_num_rows($queryAccount);
if($count == 1){
$rows = mysqli_fetch_array($queryAccount);
$secAnswer = $rows['secretkey'];
if(password_verify($answer,$secAnswer)){
echo "Successful";
}else{
echo "Try Again";
}
}
anti_injection_login은 사람들이 주사를 멈추는 것입니다. 이것은 문제가 아닙니다.
$ secAnswer 및 $ answer를 사용하여 에코를 넣는 위치에 상관없이 항상 예상대로 정확합니다.
내가 누락 된 사람이 있습니까? 나는 지금이 문제에 심각하게 뒤죽박죽이다.
(예, 전체 스크립트입니다.) 그래서 나는 아무것도 남기지 않을거야. 그러나 언급했듯이, 데이터베이스 버전에 따라 해시를 성공적으로 가져오고 있습니다 (올바른).
그리고 내가 해시에 사용하는 단어는 동일합니다 (대문자와 소문자를 모두 시도 함).
준비된 문구를 사용하십시오. 자신의 위생을 굴릴 필요가 없습니다. –
'$ rows [ 'secretkey']'에는 무엇이 포함되어 있습니까 (예를 들어). 그리고 어떻게'secretkey' 해시를 생성하는지 보여줍니다. 또한 패스워드가'aliform_at_insert'와 같다면'anti_injection_login'은 내 로그인을 망칠 것입니다 – Justinas
죄송합니다.'anti_injection_login()'은 귀하의 사이트가 해킹 될 것을 요구하고 있습니다. 준비된 진술은 * 필요한 * 것입니다. – alex