상세 컨텐츠

본문 제목

PHP SQL 인젝션 공격 대비방법

php

by 개발일지작성 2024. 3. 26. 18:49

본문

728x90

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form method="post" action="login.php">
        <input type="text" name="id" placeholder="아이디를 입력해 주세요"> <br>
        <input type="text" name="pw" placeholder="비밀번호 입력">
        <input type="submit" value="확인">
    </form>
</body>
</html>

간단한 로그인 폼 만들고

 

login.php

<?php

include "db.php";

$id = $_POST['id'];
$pw = $_POST['pw'];

// $sql = "SELECT * FROM member WHERE user_id='{$id}' AND passwd='{$pw}'";  // member1' or '1'='1 아이디 창에 이렇게 입력하고 로그인 시 성공이 됨;; 고로 코드 이렇게 짜면 망함
$sql = "SELECT * FROM member WHERE user_id=:user_id AND passwd=:pw";
$stmt = $conn->prepare($sql);

$stmt->bindParam(':user_id', $id);
$stmt->bindParam(':pw', $pw);
$stmt->execute();
$row = $stmt->fetch();

var_dump($row);

주석되어있는 코드와 안되어있는 코드 주석처리를 바꾸고 아이디 창에 member1'or;'1'='1 입력하면 알 것이다

 

물론 테이블에 member 라는 id를 가진 데이터가 있어야함

'php' 카테고리의 다른 글

페이징 처리 DB x  (0) 2024.03.27
PHP 부트스트랩 이용하여 로그인 구현  (0) 2024.03.26
PHP+Ajax 투표 프로그램  (0) 2024.03.26
PHP+Ajax 이미지 파일 업로드  (0) 2024.03.26
PHP+Ajax+MySQLI(PDO) 아이디 중복체크  (0) 2024.03.26

관련글 더보기