XSS :
Cross Site Scripting
웹사이트에
스크립트 태그를 집어넣어
웹 브라우저에서 실행시키는
해킹 방법
htmlspecialchars
XSS를 방지할 수 있는
PHP 함수
사용자가 입력한
정보가 출력되는 부분을
모두 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 "You did it!";}
}
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=\"indexing.php?id=$title\">
$title
</a>
</li>\n";}}
$i = $i + 1;
}
}
?>
URL을 이용한 해킹
기본 방지 함수
$basename
<?php
unlink('data/'.basename ($_POST['id']));
header('Location: indexing.php');
?>
-------------------------------
<?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 "You did it!";}
}
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=\"indexing.php?id=$title\">
$title
</a>
</li>\n";}}
$i = $i + 1;
}
}
?>
728x90
'프로그래밍 > PHP' 카테고리의 다른 글
Refactoring / 함수 require 활용 (0) | 2020.04.14 |
---|---|
C.R.U.D (Create.Read.Update.Delete) 코드 (0) | 2020.04.13 |
Form tag에서 GET / POST 방식 차이 (0) | 2020.04.12 |
PHP 함수 입/출력값의 원리 말로 설명하기 (1) | 2020.04.11 |