등록 페이지에서 SHA1 has와 salt를 사용하여 데이터베이스에 암호를 저장했습니다. 나는 소금이 포함되어있는 데이터베이스를 점검 할 때 올바르게 수행했다고 생각합니다. 이것이 내가 그 일을 한 방법입니다. 소금과 해시 문제로 로그인
$newPassword = $_POST['Password'] ;
if (!empty($newPassword)) {
//Escape bad characters
//$newuser = mysql_real_escape_string($newuser);
//remove leading and trailing whitespace
$newPassword = trim($newPassword);
$newPassword = sha1($newPassword);
$salt = '-45dfeHK/[email protected]/klF21-1_\/4JkUP/4';
}
else die ("ERROR: Enter a Password");
입력
내가 로그인 할 때 내 문제가 낳는$query = "INSERT INTO members (memberFirstname, memberSecondname, memberEmailaddress, memberPassword, memberAddress, memberPostcode) VALUES ('$newFirstName', '$newSecondName', '$newEmailAddress', '$newPassword$salt', '$newAddress', '$newPostcode')";
입니다. 소금을 제거하고 비밀 번호를 푸는 방법에 대해 확신 할 수 없습니다 (필요한 경우 수행해야 함). 나는 전자 메일 주소를 입력하고 암호 필드에 해시 및 소금을 붙여 넣을 수 있으며 성공적으로 로그인 할 수 있습니다.
이
은 로그인 내 스크립트입니다.<?php
include 'db.inc';
session_start();
$UserEmail =$_POST["EmailAddress"];
$UserPassword =$_POST["Password"];
$query = "SELECT * FROM members WHERE memberEmailaddress = '$UserEmail'
AND memberPassword = '$UserPassword' ";
$connection = mysql_connect($hostname, $username, $password) or die ("Unable to connect!");
mysql_select_db($databaseName) or die ("Unable to select database!");
$result = mysql_query($query) or die ("Error in query: $query. ".mysql_error());
// see if any rows were returned
if (mysql_num_rows($result) > 0) {
$_SESSION["authenticatedUser"] = $UserEmail;
// Relocate to the logged-in page
header("Location: Index.php");
}
else
{
$_SESSION["message"] = "Could not connect log in as $UserEmail " ;
header("Location: Login.php");
}
mysql_free_result($result);
mysql_close($connection);
?>
대신이 코드를 사용하십시오. http://docs.php.net/manual/en/ref.password.php – PeeHaa
http://stackoverflow.com/questions/60174/how-can-i-prevent-sql을 참조하십시오. -injection-in-php – PeeHaa
소금을 잘못 사용하고 있으며 비밀번호 보호를 위해 부적절한 해싱 기능을 선택했습니다. 이 물건을 직접하려고해서는 안됩니다. 기성품 라이브러리를 사용하십시오. 보안은이 물건을 잘못 가져 오는 데 너무 중요합니다. ** ** 잘못된 것입니다. 암호를 올바르게 저장하는 것은 어려운 문제입니다. – meagar