agencies

[프로젝트] 홈페이지 구축 (검색바 추가 및 XSS방어) v0.7 본문

Ⅲ. 정보보안

[프로젝트] 홈페이지 구축 (검색바 추가 및 XSS방어) v0.7

agencies 2024. 3. 2. 12:14

<script>alert(1)</script>

를 입력하면 위와같이 xss가 발동된다.

 

이를 해결하고자 htmlspecialchars() 함수를 이용했다.

$sub = htmlspecialchars($_POST["subject"]);
$user = htmlspecialchars($_POST["user"]);
$comm = htmlspecialchars($_POST["comm"]);

 


 

검색바 부분을 추가했다.

 

<div style="margin: 20px auto; width: 1000px; text-align: right;">
    <form action="" method="get" >
        <input type="text" name="search" placeholder="검색어를 입력하세요" style="height:21px; border: 2px solid black;margin-left:5px;padding:3px;">
        <input type="submit" value="검색" style="background-color:white;width:50px">
    </form>
</div>

 

mysql 검색 부분도 기존에는 id값만 order by desc로 했었는데 if ~ else 구문을 주어 GET방식으로 search에 값이 있을 경우 다음과 같이 데이터베이스에서 조회를 한다.

 

<?php
$per_page = 10;
$page = isset($_GET['page'])? $_GET['page'] : 1;

$start_from = ($page-1)*$per_page;




if(isset($_GET['search'])&&!empty($_GET['search'])){
$search = mysqli_real_escape_string($connect, $_GET['search']);
$query = "select * from board where title like '%$search%' or comment like '%$search%' order by id desc limit $start_from, $per_page";
}else{



$query = "select * from board order by id desc limit $start_from, $per_page";
}

 

mysqli_real_escape_string 함수같은 경우 sqli 를 방어한다.

title과 comm에 검색하고자 하는 글자가 있을 경우 이를 가져옵니다.