본문 바로가기

DEVELOPMENT/PHP

[PHP] Directory Listing (디렉토리 리스팅)

보통 서버설정에서 발생하는 취약점인데, 
브라우징 하는 모든 파일을 보여주고, 
파일 저장 및 열람이 가능하기 때문에 제2, 제3의 공격에도 이용 될 수 있습니다.





PHP상에서 폴더에있는 파일 리스트를 보여주는 다이렉트 리스팅입니다.

2차, 3차 해킹의 위험이있기 때문에 꼭 필요하신부분에 사용하셔야 합니다.


  1. <?php
  2.  
  3. $path = "./datafile";
  4.  
  5. search_file ( $path );
  6. function search_file($path) {
  7.     // 경로가 디렉토리인 경우
  8.     if (is_dir ( $path )) {
  9.         // 디렉토리 핸들러 생성
  10.         if ($dir = opendir ( $path )) {
  11.             // 디렉토리의 항목을 루프를 돌면서 구한다.
  12.             while ( ($file = readdir ( $dir )) !== false ) {
  13.                 // 항목 이름이 "." 로 시작하지 않는다.
  14.                 if ($file [0] != ".") {
  15.                     $current_path = $path . "/" . $file;
  16.                    
  17.                     // 현재 항목이 디렉토리일 경우 재귀 호출을 한다.
  18.                     if (is_dir ( $current_path )) {
  19.                         search_file ( $current_path );
  20.                     }                   // 파일일 경우
  21.                     else {
  22.                         // 파일의 전체 경로 출력
  23.                         echo $file"</a><br>";
  24.                        
  25.                     }
  26.                 }
  27.             }
  28.         } else {
  29.             echo "디렉토리 핸들러 생성 실패.  
  30.                디렉토리에 권한이 제한 되어있거나 파일시스템 오류 입니다.";
  31.         }
  32.     } else
  33.         echo $path . " 는 디렉토리가 아닙니다.";
  34. }
  35. ?>
  36.  
  37.  


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

[PHP] XML -> JSON 변환  (0) 2014.07.08
[PHP] 간단한 로그인 인증  (0) 2014.03.04