KWONKYU

PHP 시큐어 코딩 #5

May 15th, 2019
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. #1.파일 시스템 트래버스
  2. 이전과 다 비슷하다. 파일을 열고 닫는 코드에서 필터링을 제대로 안해서 오염된 데이터를 파일 이름의 일부로 사용하게 되면 사용자가 '../' 등을 통한 트래버스를 통해 다른 경로에 접근할 수도 있다. 이는 ctype_alpha() 함수로 필터링하거나 basename() 으로 원하지 않는 경로 정보를 떨쳐낼 수 있다.
  3.  
  4. #2.원격 파일 위험
  5. PHP에서는 allow_url_fopen 설정을 통해서 다양한 리소스를 로컬 파일처럼 참조할 수 있는데 file_get_contents() 등을 통해 다른 URL의 내용(HTML)을 읽어오거나 할 때 $_GET['filename'] 등을 매개변수로 받는다면 이 filename에 사용자가 원하는 URL을 삽입하여 오염되었다는 사실을 감출 수 있다. 역시 필터링을 잘 하도록 하자. file_get_contents()로 얻어온 내용에 대해 htmlentities() 를 적용한다던가.
  6.  
  7. #3.명령 삽입 공격
  8. 이는 시스템 명령(system, exec 등)을 사용할 때 원격 데이터를 사용하거나 오염된 데이터를 사용하는 경우 위험하다. exec() 함수는 쉘 명령을 실행하기 위해 사용되는 함수로써 명령 실행 결과의 마지막 라인을 반환한다. 배열을 인자로 넘겨 각 라인을 배열의 요소로 저장할 수도 있는데 그래도 오염된 데이터의 위험성이 더 크기 때문에 지양하는 것을 권한다. passthru(), shell_exec(), system() 등은 입력을 필터링하고 출력을 이스케이프함으로써 예방할 수 있지만 역시 사용이 권장되지는 않는다.
Advertisement
Add Comment
Please, Sign In to add comment