-
2023_09_02 MySQL&PHP 공부정리개발공부/MySQL 2023. 9. 3. 12:49
https://www.youtube.com/watch?v=Uo1aYyL3qUQ&list=PLuHgQVnccGMA5836CvWfieEQy0T0ov6Jh&index=14
[생활코딩] 9강~10강.1
<배운것>
-9강전체 소스코드 리뷰
<?php$conn = mysqli_connect("localhost:81", "root", "password", "opentutorials2");$sql = "SELECT * FROM topic LIMIT 100";$result = mysqli_query($conn, $sql);$list=''; //빈리스트를 담아 title제목을 담음while ($row = mysqli_fetch_array($result)){ //mysqli_fetch_array는 더이상 전달할 값이 없으면 NULL(false)을 반환함.$list = $list."<li><a href=\"index.php?id={$row['id']}\">{$row['title']}</a></li>"; //list라는 변수에 title컬럼의 값들을 담음}$article = array('title'=>'Welecome','description'=>'Hello, Web'); //index.php일때(id값이 없을때) 기본값을 배열로 설정.if (isset($_GET['id'])){ //id값이 있는 경우 title과 본문의 내용을 설정$sql = "SELECT * FROM topic WHERE id={$_GET['id']} LIMIT 100";$result = mysqli_query($conn, $sql);$row = mysqli_fetch_array($result);$article = array('title'=>$row['title'],'description'=>$row['description']);}
?>
<!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><h1><a href="index.php">WEB</a></h1><ol><?=$list?></ol><a href="create.php">create</a><h2><?=$article['title']?></h2><?=$article['description']?></body></html>-flitering : 사용자가 입력한 정보에서 문제가 될만한 정보를 차단하는 행위
-escaping : 저장되어있는 정보를 사용자에게 노출할때 문제가 될만한 것을 차단하는 행위
-mysqli_real_escape_string($conn, $_GET['id']) : sql주입공격과 관련된 기호들을 \를 붙여 이스케이프로 처리하는 함수
$filtered_id = mysqli_real_escape_string($conn, $_GET['id']);$sql = "SELECT * FROM topic WHERE id={$filtered_id} LIMIT 100";-sql injection. 아래와 같이 sql문을 전송하는 코드에
$sql = "INSERT INTO topic(title, description, created)VALUES('{$filtered['title']}','{$filtered['description']}',NOW()아래와 같이 코드가 DB에전송되게끔 뒤쪽의 NOW()가 처리가 안되도록 "-- "를 붙이고 앞쪽에 임의로 지정한 시간을 넣어 sql injection 공격이 가능함.
INSERT INTO topic (title, description, created) VALUES('HeHe', 'haha', '2018-1-1 00:00:00');-- ', NOW() )제작중인 페이지에서는 아래와 같이 submit하면 sql injection공격이 가능해짐
sql injection 공격 따라서 이러한 공격을 방지하기 위해 mysqli_real_escape_string()을 통해 전달되는 데이터를 flitering해야함.
'개발공부 > MySQL' 카테고리의 다른 글
2023_09_03 MySQL&PHP 공부정리 (0) 2023.09.04 2023_09_01 MySQL&PHP 공부정리 (0) 2023.09.02 2023_08_31 MySQL&PHP 공부정리 (0) 2023.08.31 2023_08_31 MySQL 공부정리 (0) 2023.08.31 2023_08_30 MySQL 공부정리 (0) 2023.08.30