PHP의 보안 취약점에 대해서 짧게 알아 본 것

김민준·2024년 2월 29일
0

PHP7

Personal HomePage Tools

PHP7에 대해 내가 알고 있던 것

PHP하면 떠오르는 것이 "개인 사이트 제작용", "유지보수가 불편하다", "보안이 나쁘다"정도로만 알고 있는데 한번 제대로 알아봐야겠다.

PHP란?

서버 측에서 작동하는 스크립트 언어이다.
같은 스크립트 언어이지만 클라이언트 측에서 작동하는 자바스크립트와 반대다.

클라이언트의 요청과 DB의 연동을 위해 PHP파서를 통해 응답을 받아 그 결과 값을 사용자에게 전달한다.

장점

  1. 오픈소스이다.
  2. 배우기 쉽다.
  3. 대부분의 운영체제에서 구현이 가능하다.
  4. 웹브라우저의 버전과 종류에 영향을 받지 않는다.
  5. 코드가 노출되지 않아서 보안이 우수하다.

단점
1. 실시간 처리에 취약하다.
2. 언어의 일관성이 부족하다.
3. 보안이 취약하다.

보안 취약??

나는 PHP가 보안에 취약하다고 알고 있었는데 오히려 백엔드에서 데이터를 처리하기 때문에 자바스크립트보다 안전하다는 정보를 얻게 되었다. 과연 어떤 점이 PHP의 보안 취약점일까?

PHP의 보안 취약점과 대처법을 간단하게 정리해봤다.

크로스 사이트 스크립팅 XSS : 웹페이지에 악성 스크립트를 주입하여, 브라우저에서 실행되게 하는 공격방법

  • 사용자 입력을 출력하전에 이스케이프 처리
  • 콘텐츠 보안 정책(CSP)구현으로 외부 스크립트의 실행을 제한

원격 코드 실행 Remote Code Execution : 서버에서 임의의 코드를 싱행하여 서버를 제어하는 공격방법

  • include 문을 사용한 홈페이지 제어시 반드시 그 파일의 경로와 이름이 올바른지 확인한다.
  • 사용자의 입력을 엄격하게 검증한다. 필요할 경우 안전하게 변형한다.
  • 시스템 명령어를 실행하는 함수를 적게 사용하고, 필요한 경우에만 안전한 매개 변수와 함께 사용한다.

SQL 인젝션 SQL Injection : SQL 쿼리를 조작하여 DB에 무단 엑세스하는 것이다.

  • 쿼리를 동적으로 생성한다.(Prepared Statement)
  • 바라미터 바인딩 : SQL 쿼리에 값을 직접 삽입하지 않고, 사용자 입력을 쿼리의 파라미터로 바인딩하여 전달.
  • 문자와 숫자를 구분하여 입력받는다.
  • 사용자가 입력한 작은 따옴표가 쿼리문에 반영되지 않도록한다.

파일 업로드 : php, html 같은 실행 가능한 파일을 업로드하여 서버에서 실행시키는 공격방법

  • 업로드 파일의 MIME 타입을 검사하여 실행 가능한 스크립트 파일을 차단한다.,
  • 업로드된 파일의 이름을 변경하고, 접근 권한을 제한한다.
  • 상대 경로로 접근할 수 없게 한다.

세션 탈취 : 세션 정보를 탈취하여 인증된 사용자로 위장하는 공격방법

  • HTTPS 사용
  • 정기적으로 세션 ID를 무효화 및 재생성
  • 쿠키보다는 서버세션을 사용해서 로그인을 유지한다.

참조한 페이지

'PHP'개발이란? 5분만에 쉽게 알아보기 - 요즘IT
[PHP] PHP란 무엇인가? (자바스크립트와 차이점)
PHP란?, 기업에서 PHP를 활용하는 이유

PHP 5.5와 PHP 7/8의 차이점
PHP7 문법적 변경점 정리

PHP 보안 취약점 TOP5
PHP 보안강화 하기 - web service hardening - GitBook
PHP 보안설정에 대해 알아보겠습니다.
PHP 보안강화하기

profile
node 개발자

0개의 댓글

관련 채용 정보