-2
회원 가입 양식과 내 웹 사이트 로그인 양식을 만들었습니다. 모든 것이 정상적으로 작동합니다 : 내 웹 사이트에 로그인 할 때 실제로 입력 한 암호가 아닌 암호화 된 암호를 입력해야합니다. 등록 양식이 소금에 담겨져 있으므로 모든 사용자가 사용할 수있게 만들었습니다. 그가 실제로 입력 한 암호로 로그인 할 수 있습니까? 감사등록 양식 오류?
Register.php
<?php
include 'header inc.php';
$error = "";
if (@$_POST['register']) {
$firstname = strip_tags($_POST['firstname']);
$lastname = strip_tags($_POST['lastname']);
$username = strip_tags($_POST['username']);
$email = strip_tags($_POST['email']);
$password1 = strip_tags($_POST['password']);
$password2 = strip_tags($_POST['passwordrepeat']);
$day = strip_tags($_POST['day']);
$month = strip_tags($_POST['month']);
$year = strip_tags($_POST['year']);
$dob = "$day/$month/$year";
if ($firstname == '') {
echo "Firstname cannot be left empty.";
}
else if ($lastname == '') {
echo "Lastname cannot be left empty.";
}
else if ($username == '') {
echo "Username cannot be left empty.";
}
else if ($email == '') {
echo "Email cannot be left empty.";
}
else if ($password1 == '') {
echo "Password cannot be left empty.";
}
else if ($password2 == '') {
echo "Repeat Password cannot be left empty.";
}
else if ($day == '') {
echo "The day you were born cannot be left empty.";
}
else if ($month == '') {
echo "The month you were born cannot be left empty.";
}
else if ($year == '') {
echo "The year you were born cannot be left empty.";
}
else {
//Check the username doesn't already exist
$check_username = mysql_query("SELECT username FROM users WHERE username='$username'");
$numrows_username = mysql_num_rows($check_username);
if ($numrows_username != 0) {
echo 'That username has already been registered.';
}
else
{
$check_email = mysql_query("SELECT email FROM users WHERE email='$email'");
$numrows_email = mysql_num_rows($check_email);
if ($numrows_email != 0) {
$error = 'That email has already been registered.';
}
else
{
$salt1 = "francis";
$salt1 = md5($salt1);
$salt2 = "cookie";
$salt2 = md5($salt2);
$salt3 = "php";
$salt3 = md5($salt3);
$password1 = $salt1.$password1.$salt3;
$password1 = md5($password1.$salt2);
$password2 = $salt1.$password2.$salt3;
$password2 = md5($password2.$salt2);
if ($password1 != $password2) {
$error = 'The passwords don\'t match!';
}
else
{
//Register the user
$register = mysql_query("INSERT INTO users VALUES('','$firstname','$lastname','$username','$email','$password1','$dob','no')");
die('Regsitered successfully!');
}
}
}
}
}
?>
<html>
<head></head>
<body>
<h2 style="color:#848484;">Create Your Account</h2>
<form action='join.php' method='POST'>
<input type='text' name='firstname' onclick='value="" ' id='username1'/><p />
<input type='text' name='lastname' onclick='value=""'id='username1'/><p />
<input type='text' name='username'onclick='value=""'id='username1'/><p />
<input type='text' name='email' onclick='value=""'id='username1'/><p />
<input type='text' name='password' onclick='value=""'id='username1'/><p />
<input type='text' name='passwordrepeat' onclick='value=""'id='username1'/><p />
<input type='text' name='day' value='' size='3' maxlength='2' onclick='value=""'id='username1'/>
<input type='text' name='month' value='' size='6' maxlength='2' onclick='value=""'id='username1'/>
<input type='text' name='year' value='' size='4' maxlength='4' onclick='value=""'id='username1'/><p />
<input type='submit' name='register' value='Create Your Account'id='submit1' />
<?php echo $error; ?>
</form>
</body>
Login.php
<?php
include ('header inc.php');
if (isset($_POST['username'])&&($_POST['password'])) {
$username = strip_tags($_POST['username']);
$password = strip_tags($_POST['password']);
$check_username = mysql_query("SELECT username FROM users WHERE username='$username'");
$numrows = mysql_num_rows($check_username);
if ($numrows != 1) {
echo 'That User doesn\'t exist.';
}
else
{
$check_password = mysql_query("SELECT password FROM users WHERE password='$password' && username='$username'");
while ($row = mysql_fetch_assoc($check_password)) {
$password_db = $row['password'];
if ($password_db == $password) {
$_SESSION['username'] = $username;
header("Location: template.php");
}
}
}
}
?>
<h2 style="color:#848484;">    Login to Your Account</h2>
           <form action='login.php' method='POST'>
           <input type='text' name='username' id="username1"/><p />
           <input type='password' name='password' id="username1"/><p />
           <input type='submit' name='submit' value='Login to my Account' id="submit1" />
</form>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
SQL 삽입 취약점, 유효하지 않은 HTML 엔티티,'@'오류 억제 사용, 로그인 양식에 입력 된 암호 해시 실패, 더 이상 사용되지 않는/더 이상 쓸모없는 mysql 라이브러리 사용 ... 가야할까요? 에? –
1) 왜 * 당신이 암호를 해싱하는지 이해하고 있습니까? 2) 입력 된 암호를 해시하고 확인을 위해 데이터베이스의 해시와 비교해야합니다. 3) 소금에 잘못 끼고있는 경우 암호마다 임의의 소금을 사용해야합니다. 4) 암호 해싱을 위해 MD5가 손상되었습니다. 5) PHP의 암호 해시 함수를 사용하십시오 : http://php.net/password_hash – deceze
어떻게이 코드를 모두 수정합니까 / – user3025939