Today's Answer 02-2

Nami·2023년 5월 14일
0

TATQ

목록 보기
5/6

2. 웹 브라우저 스크립트 작성시 일어날 수 있는 보안 이슈에 대해서도 꼬리질문이 있었는데 XSS(Cross-site scripting) 공격과 관련된 것이었다. 그 중 XSS Cheat Sheet, HttpOnly 키워드를 얻었는데 이것과 PHP의 상관관계가 있을까? 웹 개발시 PHP는 필수적일까? 어떤 용도로 사용될까?

XSS(Cross-Site Script)

사용자가 요청한 페이지에 강제로 악성 스크립트를 삽입해서 브라우저에서 악의적인 동작이 실행되도록 하는 공격기법.

어플리케이션에서 브라우저로 데이터를 전송하는 페이지에서 사용자가 입력한 데이터를 검증하지 않거나, 데이터 출력시 데이터를 필터링하지 않을 때 발생한다. 일반적으로 Javascript에서 발생하지만 동적 데이터를 생성하는 모든 언어에서 발생할 가능성이 있다. (PHP도 그러하여 꼬리질문에 나온듯하다.)

약자를 보면 CSS가 맞지만 이미 Cascading Style Sheet가 사용중이라 XSS로 사용!

XSS 공격 방식

1. Reflected XSS
사용자의 요청에 포함된 스크립트가 서버로부터 그대로 반사(Reflected)되어 응답메세지에 포함되어 브라우저에서 스크립트를 실행하는 공격기법
2. Stored XSS
악성 스크립트가 서버측에 저장되어 사용자들의 요청이 있을 때마다 저장된 스크립트가 사용자에게 응답되어 스크립트를 실행시키는 공격기법
3. DOM-based XSS
DOM을 이용해서 요소들을 수정하거나 추가하는 등의 행위를 할 때 발생하는 XSS 취약점을 말한다. 위 두개는 서버에서 사용자의 요청을 처리하는 과정에서 취약점이 존재하여 응답으로 스크립트가 전송되는 반면, 이는 DOM을 이용하여 동적으로 페이지를 조작할 때 발생하는 취약점이다.

대응 방법

  • 특수문자 필터링(특수문자를 HTML로 인코딩, 필터링)
  • XSS 방어 라이브러리(MS의 AntiXSS, Mozilla의 Bleach 등)
  • CSP(콘텐츠 보안 정책) - 스크립트 실행 조건 설정하기
  • 브라우저 확장앱
  • 웹 방화벽
  • Set-Cookie의 HttpOnly, SameSite, Secure…
  • OWASP에서 XSS필터를 우회하는 치트시트를 제공(XSS Cheat Sheet)

HttpOnly 란?

서버측에는 HTTP 응답 헤더로서 Set-Cookie를 통해 클라이언트 측에 쿠키를 생성할 수 있도록 요청할 수 있다. Set-Cookie에는 다양한 속성으로 옵션 부여가 가능한데, HttpOnly도 그 중 하나.

클라이언트 측에서 HTTP통신 외에는 쿠키에 접근 불가능하도록 막는 것.
HttpOnly Attribute를 가진 쿠키는 클라이언트에서 Javascript를 통한 접근이 통제된다.

한계점

  • 최신 웹페이지들은 편의성, 속도를 위해 SPA(Single Page Application)으로 구현이 되어지고 있다. 이때 AJAX를 통해 서버와 통신한다.(Asynchronous Javascript And XML). AJAX 통신을 할때 쿠키 값을 서버에 전송해야하기에 사용에 제약이 있다.
  • XST(Cross-site-Tracing) 공격
    HttpOnly 방어책을 우회하는 방법이 발견, HttpOnly만으로 쿠키를 보호하기엔 한계가 있음.

✅ 참조

XSS 필터 우회 치트 시트
OWASP
XSS 공격과 쿠키의 HttpOnly
XSS에 대해서


PHP(Hypertext Preprocessor)란?

HTML 코드를 프로그래밍적으로 생성하며 서버 쪽에서 실행 되는 프로그래밍 언어

Personal Home Page Tools 의 약자에서
Hypertext Preprocessor 로 의미가 변경

PHP 프로그램을 내려받기 전에 웹 서버에서 먼저 실행이 됨.
MySQL과 연동으로 사용해 주로 블로그, SNS, 쇼핑몰, 일정관리 등을 만들 때 많이 이용함

장점

  • 웹에 최적화된 언어
  • 웹 개발에 필요한 수많은 로직들이 함수의 형태로 미리 제공됨
  • 크로스플랫폼
  • 거의 모든 DB를 지원
  • 가장 많은 공개 소프트웨어가 PHP로 만들어짐
  • 빠른 생산성
  • 운영 비용 저렴

단점

  • 웹개발에 특화 (간단한 사이트 제작에 최적화)
  • 유저 형태가 다양하고 복잡한 기능을 갖춘 사이트의 경우 부적합
  • 쉬운 접근성 (보안 문제)

PHP와 관련된 비판 글이 있는데, 2012년 작성되어 아직도 PHP의 단점을 말할 때 언급되는 포스팅이다. 원문은 영어로 되어있어 한국어로 번역된 링크를 첨부한다.

PHP: 잘못된 디자인의 프랙탈

하지만, PHP의 점유율은 여전히 높고 가치가 없다기보다 자신에게 맞지 않으면 충분한 대안이 있다고 이해하면 될 듯하다. PHP 또한 동적 언어기에 XSS와 관련 꼬리질문으로 나온 것, JS 위주로 배우겠지만 JS와의 차이점 또한 짚고 갈 수 있어 좋았다.

javascript는 클라이언트 측 스크립트, PHP는 서버 측 스크립트.


✅ 참조

PHP란 무엇인가?
PHP개발

0개의 댓글