본문 바로가기
PHP

PHP 보안 파일 경로 보호

by abkorc33 2023. 1. 24.

✔️Cross Site Scripting

XSS
스크립트 태그 안에 자바스크립트 사용
사용자를 특정 페이지로 보낼 수 있음, 악용 가능성 높음

ex)
<script>
alert("hi");
<script>
location.href="www.naver.com";
</script>


📌php가 가진 함수 중  cross site scripting을 방지하기 위한 두가지


크로스 사이트 스크립팅 방지 메서드 htmlspecialchars()
=>사용자가 변조할 수 있는 정보는 철저히 의심해야 한다.
입력된 정보가 출력되는 부분은 모두 htmlspecialchars()사용


strip_tags();

태그를 다 날린다, 특정 태그 허용 / 옵션지정 가능

참고 : https://www.codingfactory.net/10073


basename("data/".$_GET['id']);
파일의 경로에서 파일명만 추출해주는 함수

 

print.php

<?php
function print_title() {
    if(isset($_GET['id'])) {
        echo htmlspecialchars($_GET['id']);
    } else {
        echo "Welcome";
    }
}
function print_description() {
    if(isset($_GET['id'])) {
        // 본문 내용 부분을 htmlspecialchars()로 제한하면 이미지, 줄바꿈 태그 작동x
        // strip_tags() : 태그를 다 날린다, 특정 태그 허용 / 옵션지정 가능
        // basename() : 파일의 경로에서 파일명만 추출해주는 함수
        $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++;
    }
}
?>

 

delete.php

<?php
unlink('data/'.basename($_POST['id']));
header('Location: /index.php');
?>

 

'PHP' 카테고리의 다른 글

PHP Excel 설정  (0) 2023.11.16
[정규식] preg_match("/(http:)/i", $test)  (0) 2023.10.18
PHP 파일로 모듈화  (0) 2023.01.24
PHP CRUD 기초  (0) 2023.01.24
PHP 기초4  (0) 2023.01.20

댓글