인프런 커뮤니티 질문&답변
select * from member where id= '1' or '1'='1' --
작성
·
569
1
SQL 인젝션 관련하여 질문드립니다.
제목처럼 -- 나 # 등의 주석처리로 로그인을 우회할 수 있는 경우는
insequre_website 의 login.php 에서 로그인을 처리하는 로직 (하단)처럼
id값과 pw 값을 동시에 받아서 query 로 넘기는 경우만 해당하는거죠?
$query = "select * from members where id='{$id}' and password='{$password}'";
즉, 하단의 로직처럼 일단 id가 있는지 확인하고,
id가 있을 경우 pw값 일치여부를 보는 경우엔 주석처리로 로그인 우회가 안되는게 맞는거죠?
감사합니다!
<?php
session_start();
$connect = mysqli_connect("localhost", "", "", ") or die("fail");
//입력 받은 id와 password
$id=$_GET['id'];
$pw=$_GET['pw'];
//아이디가 있는지 검사
$query = "select * from member where id='$id'";
$result = $connect->query($query);
//아이디가 있다면 비밀번호 검사
if(mysqli_num_rows($result)==1) {
$row=mysqli_fetch_assoc($result);
//비밀번호가 맞다면 세션 생성
if($row['pw']==$pw){
$_SESSION['userid']=$id;
if(isset($_SESSION['userid'])){
?> <script>
alert("로그인 되었습니다.");
location.replace("./index.php");
</script>
<?php
}
else{
echo "session fail";
}
}
else {
?> <script>
alert("아이디 혹은 비밀번호가 잘못되었습니다.");
history.back();
</script>
<?php
}
출처: https://chamggae.tistory.com/83 [silqia 공부 블로그]




