보안에 대해서 단순히 http와 https 인증서 사용 유무등 차이점만 알고있었는데, 현업에서는 내부망을 사용해서 깊게 고민을 안해봤던거 같다.
웹에 관한 보안에 대해서 질문을 받았을때 저 대답밖에 할 수 없었다.
도메인을 활용한 외부망을 사용하게 된다면
이에대한 고도화된 방법이 있다고 알게되었고, 이를 적어두려한다.
웹 어플리케이션은 사용자 데이터나 민감한 정보를 늘 다룬다.
해커들은 크게 XSS(크로스 사이트 스크립팅)과 CSRF(크로스 사이트 요청 위조)를 사용한다고 한다.
XSS는 브라우저에서 실행되는 악성 스크립트를 통해 개인정보나 데이터를 탈취한다.
사용자 계정을 세션 쿠키나 토큰을 훔쳐 로그인 상태를 가로채거나, 사용자 키보드 입력을 모니터링, 웹사이트 피싱사이트, 웹사이트 변조로 혼란을 야기한다.
CSRF는 인증된 사용자의 권한을 도용하여, 공격자가 원하는 행동을 대신 수행하게 한다.
송금이나 결제를 조작하고, 계정 설정을 변경하거나, 게시물 작성및 삭제, 대량 요청을 보내 디도스등 서버 장애 유발을 한다.
구분 | XSS | CSRF |
---|---|---|
공격 주체 | 사용자의 브라우저 | 사용자의 세션(쿠키) |
목표 | 악성 스크립트 실행 | 사용자의 권한 도용 |
방법 | 입력값에 스크립트 삽입 | 사용자를 속여 요청 전송 |
피해 대상 | 사용자(클라이언트) | 서버 및 사용자 |
방어 방법 | 입력값 검증, CSP | CSRF 토큰, SameSite 쿠키 |
이에 대한 보안을 위해서 XSS 방어에는 입력값 검증과 출력시 인코딩을 통한 HTML Escape 처리(React에선 자동으로 처리) CSP 설정(인증된 도메인에서만 스크립트 로드) 해야한다.
CSRF 방어에는 CSRF 토큰과 SameSite 쿠키 설정, CORS정책 강화를 해야한다.