Filtering : 사용자가 입력한 정보에서 문제가 될만한 것을 차단하는 것

Escaping : 저장되어 있는 정보를 사용자에게 표시할 때(출력) 문제가 될만한 것을 차단하는 것

 

 

Filtering

사용자가 입력하는 정보는 모두 불신해야 한다.

mysqli_real_escape_string( ) : 인자로 들어온 데이터 중에서 sql 공격 관련 기호들을 문자로 바꾸는 함수

=> SQL Injection 방어 가능 

SQL Injection문 시도
왼쪽은 mysqli_real_escape_string( )를 사용하지 않았을 때, 오른쪽은 사용하였을 때의 결과이다.

 

Escaping

오염된 데이터 출력을 막아야 한다.

htmlspecialchars( ) : HTML 특수 문자가 일반 문자로 인식되어 그대로 출력되도록 해주는 함수

=> XXS 방어 가능

& &
" "
' '
< &lt;
> &gt;

 

<?php
	echo '<script>alert("hi");</script>'; //1번
	echo htmlspecialchars('<script>alert("hi");</script>');//2번
?>

 

왼쪽부터 차례로 1번, 2번

1번의 경우는 대표적인 XXS 공격으로, hi라는 경고창이 뜨게 되지만

2번의 경우는 함수를 이용해 특수문자들을 문자열 그대로 출력하고 있다.

 

<!--사용 예시-->
...
$escaped_title  = htmlspecialchars($row['title']);
echo "<li><a href=\"index.php?id={$row['id']}\">{$escaped_title}</a></li>"
...

'WEB > PHP' 카테고리의 다른 글

PHP와 MySQL_연동 후 데이터 출력  (0) 2021.01.31
PHP와 MySQL 연동  (0) 2021.01.31
PHP & DATABASE  (0) 2021.01.30
form과 GET, POST  (0) 2021.01.29
PHP 문법 기초  (0) 2021.01.28

+ Recent posts