[Normaltic's 취업반 과제] 식별 / 인증 분리 + HASH 로그인
2024. 5. 2. 13:30ㆍ정보보안 및 해킹/Normaltic's 취업반 과제
login.php - 로그인 버튼 분리 및 추가 -> 식별 인증 동시 / 식별 인증 분리 / 식별 인증 동시 및 해시조건비교 / 식별 인증 분리 및 해시조건비교
[생략]
<button class="submit-button" name="submitsametime" value="Loginsametime">Sign in 식별인증동시 </button><br>
<button class="submit-button" name="submitseparate" value="Loginseparate">Sign in 식별인증분리 </button><br>
<button class="submit-button" name="submitsametimewithhash" value="Loginsametimewithhash">Sign in 식별인증동시+해시 </button><br>
<button class="submit-button" name="submitseparatewithhash" value="Loginseparatewithhash">Sign in 식별인증분리+해시 </button><br>
<button class="submit-button" name="signup" value="signup">Sign up </button>
<?php
if (isset($_POST['submitsametime'])) {
login_check($_POST['id'], $_POST['pass'], false, false);
}
if (isset($_POST['submitseparate'])) {
login_check($_POST['id'], $_POST['pass'], false, true);
}
if (isset($_POST['submitsametimewithhash'])) {
login_check($_POST['id'], $_POST['pass'], true, false);
}
if (isset($_POST['submitseparatewithhash'])) {
login_check($_POST['id'], $_POST['pass'], true, true);
}
[생략]
connect_db.php - DB연결하는 부분에서 username으로만 쿼리를 구성할지 아니면 username과 userpassword를 가지고 쿼리를 구성할지 판단
[생략]
function find_name_use_sql($username, $userpass, $is_separate)
{
$table_name = "rame_table";
if($is_separate)
{
$sql_query = "SELECT * FROM $table_name WHERE name='$username'";
}
else
{
$sql_query = "SELECT * FROM $table_name WHERE name='$username' and password='$userpass'";
}
$sql_res = mysqli_query(connect_db(), $sql_query);
// if ($sql_res) {
// echo "QUERY ACTIVE <br>";
// } else {
// echo "QUERY FAILED <br>";
// }
return $sql_res;
}
[생략]
login_func.php - 구성된 쿼리에서 받아온 결과문을 가지고 사용자가 입력한 비민번호를 해시처리하여 DB에 있는 해시처리 된 비밀번호와 비교하기 혹은 사용자가 입력한 비밀번호를 그대로 DB에 있는 평문 비밀번호와 비교할지 판단
[생략]
function try_check_login($username, $userpass, $is_hash, $is_separate)
{
$sql_row = mysqli_fetch_array(find_name_use_sql($username, $userpass, $is_separate));
//var_dump($sql_row);
echo "name : " . $sql_row['name'];
$db_id = $sql_row['name'];
if($is_hash)
{
$db_pass = $sql_row['passwordhash'];
$userpass = hash('sha256', $userpass);
}
else
{
$db_pass = $sql_row['password'];
}
if ($username == $db_id && $userpass == $db_pass) {
echo "LOGIN SUCCESS <br>";
return $username;
} else {
echo "LOGIN FAILED <br>";
}
}
//LOGIN CHECK FUNCTION
function login_check($id, $pass, $is_hash, $is_separate)
{
$login_res = try_check_login($id, $pass, $is_hash, $is_separate);
echo $login_res;
if ($login_res) {
header("location: index.php?login_id=" . $login_res);
exit;
} else {
echo "<script>alert('아이디 혹은 비밀번호가 틀렸습니다.');
location.href='index.php'
</script>";
exit;
}
}
[생략]
'정보보안 및 해킹 > Normaltic's 취업반 과제' 카테고리의 다른 글
[Normaltic's 취업반 과제] jwt (1) | 2024.05.03 |
---|---|
[Normaltic's 취업반 과제] 회원가입 시 비밀번호 해시처리하기 (0) | 2024.05.02 |
[Normaltic's 취업반 과제] 비밀번호 확인 (1) | 2024.05.01 |
[Normaltic's 취업반 과제] Logout (0) | 2024.04.30 |
[Normaltic's 취업반 과제] 비밀번호 Visibility Toggle (0) | 2024.04.29 |