XSS
lib/print.php
XSS 공격을 막기 위해 사용자의 입력이 들어오는 부분에 htmlspecialchars()
함수를 적용한다.
<?php
function print_title(){
if(isset($_GET['id'])){
echo htmlspecialchars($_GET['id']);
} else {
echo "Welcome";
}
}
function print_description(){
if(isset($_GET['id'])){
echo htmlspecialchars(file_get_contents("data/".$_GET['id']));
} else {
echo "Hello, PHP";
}
}
function print_list(){
$list = scandir('./data');
$i = 0;
while($i < count($list)){
$title = htmlspecialchars($list[$i]);
if($list[$i] != '.') {
if($list[$i] != '..') {
echo "<li><a href=\"index.php?id=$title\">$title</a></li>\n";
}
}
$i = $i + 1;
}
}
?>
파일 경로 보호
basename()
함수를 사용하여 경로를 제외한 파일명만을 추출함으로써 보안을 강화한다.
<?php
function print_title(){
if(isset($_GET['id'])){
echo htmlspecialchars($_GET['id']);
} else {
echo "Welcome";
}
}
function print_description(){
if(isset($_GET['id'])){
$basename = basename($_GET['id']);
echo htmlspecialchars(file_get_contents("data/".$basename));
} else {
echo "Hello, PHP";
}
}
function print_list(){
$list = scandir('./data');
$i = 0;
while($i < count($list)){
$title = htmlspecialchars($list[$i]);
if($list[$i] != '.') {
if($list[$i] != '..') {
echo "<li><a href=\"index.php?id=$title\">$title</a></li>\n";
}
}
$i = $i + 1;
}
}
?>
References
https://opentutorials.org/module/3266/19390
PHP의 보안 - WEB2 - PHP
수업소개 웹애플리케이션에게 일어날 수 있는 나쁜 일들을 알아보고, 이런 문제를 해결하는 사례를 알아봅니다. Cross site scripting (XSS) XSS.php XSS Cross site scripting <!--?php echo htmlspecialchars(' alert("babo
opentutorials.org
'PHP' 카테고리의 다른 글
생활코딩 WEB3 - PHP & MySQL 학습 (4) | 2023.12.25 |
---|---|
Mac에 MAMP 설치하기 (0) | 2023.12.24 |
php CRUD와 모듈화 (0) | 2023.12.20 |
php 문법 정리 (0) | 2023.12.17 |