본문 바로가기
Study/basic

[Basic] Frontend의 이해 - Web Security Knowledge

by 오후 6시의 봄 2023. 5. 11.

1. HTTPS

  • HTTPS는 Hypertext Transfer Protocol Secure의 약어
  • 웹 브라우저와 웹 사이트 간의 통신을 보호하기 위해 인터넷에서 안전한 데이터 전송 프로토콜
    • 프로토콜(protocol)은 컴퓨터나 통신 장비 등 각종 네트워크 기기 간에 통신을 하기 위해 정해진 규칙
      데이터를 주고받기 위한 명령어나 규칙의 집합
      에러 검출, 복구, 인증, 보안 등 다양한 기능을 제공
      HTTP, FTP, SMTP, POP 등 다양한 프로토콜이 사용
      프로토콜이 없으면 데이터가 제대로 주고 받아지지 않으므로 통신 불가능
  • HTTPS는 SSL (Secure Sockets Layer) 또는 TLS (Transport Layer Security) 프로토콜을 사용하여 데이터를 암호화
    • SSL은 Secure Sockets Layer의 약자로, 인터넷에서 데이터를 안전하게 전송하기 위한 프로토콜
      데이터를 전송하기 전에 데이터를 암호화하고, 이를 수신측에서 다시 해독하여 안전하게 전송하는 방식
      Transport Layer Security (TLS)로 대체되었지만, 일반적으로 SSL과 TLS는 혼용해서 사용
      SSL/TLS는 인터넷에서 주로 웹 브라우저와 웹 서버 간에 통신할 때 사용
    • TLS는 네트워크 상에서 통신하는 양 단말 간의 보안을 강화하기 위한 암호화 프로토콜 중 하나
      SSL (Secure Sockets Layer)의 후속 버전이며, 현재 TLS 1.2, 1.3 등의 버전 사용
      대칭키 암호화와 공개키 암호화를 결합하여 통신하는 양 단말 간의 데이터를 보호
      인증서를 통해 인증 수단으로 활용
      HTTPS, SMTPS, FTPS 등의 프로토콜에서 보안을 제공
      인터넷 전체적으로 보안 통신에서 가장 널리 사용되는 프로토콜 중 하나
  • 웹 사이트 인증서를 사용하여 웹 사이트의 신원을 확인
  • 이를 통해 사용자와 웹 사이트 간의 통신이 제3자에게 노출되는 것을 방지
  • 사용자의 개인 정보와 데이터를 안전하게 보호할 수 있음

2. Content Security Policy

  • 웹 애플리케이션 보안 정책 중 하나
  • 악성 스크립트를 실행하려는 공격자로부터 웹 사이트를 보호하는 데 사용
  • HTTP 헤더를 사용하여 웹 사이트에서 로드할 수 있는 리소스의 출처 및 유형을 지정하여 보안 문제를 방지
  • 파일에 설정하거나, 프레임워크나 라이브러리를 사용하는 경우, 설정 옵션을 통해 CSP 설정 가능
  • CSP를 사용하면 웹 사이트 운영자는 허용된 출처에서만 자바스크립트 파일, 이미지, 스타일시트 등을 로드할 수 있도록 제한할 수 있으며, 실행할 수 있는 스크립트의 유형 및 출처도 제한할 수 있음
    • XSS (Cross-site Scripting) 공격: 악성 스크립트를 삽입하여 다른 사용자의 정보를 탈취하는 공격
    • 데이터 침해: 해커가 데이터베이스에 접근하여 중요 정보를 유출하는 공격
    • 클릭재킹: 링크를 클릭하면, 실제로는 해커가 원하는 사이트로 이동하도록 하는 공격
  • CSP를 적용하면 이러한 공격을 방지할 수 있으며, 보안 취약점을 줄이는 데 도움이 됨

3. CORS

  • 다른 도메인의 리소스에 접근할 때, 브라우저가 보안상의 이유로 차단하는 문제를 해결하기 위해 등장
  • 웹 애플리케이션에서 다른 도메인의 리소스에 접근할 수 있는 권한을 부여하는 보안 기능
  • HTTP 응답 헤더를 설정하여 구현
    • Access-Control-Allow-Origin: 다른 출처의 리소스 요청이 허용되는 출처를 지정
    • Access-Control-Allow-Methods: 요청이 허용되는 HTTP 메서드를 지정(GET, POST 등..)
    • Access-Control-Allow-Headers: 요청 헤더에 포함될 수 있는 정보를 지정(Auth 등..)
    • Access-Control-Allow-Credentials: 자격 증명(쿠키, 인증 헤더 등)을 사용할 수 있는지 여부를 지정

4. OWASP Security Risks

  • OWASP는 매년 Top 10 보안 위협 목록을 발표하여 개발자와 보안 전문가가 웹 애플리케이션 보안을 강화할 수 있도록 지원
  • OWASP Top 10 보안 위협 목록은 보안 위협에 대한 인식과 이해를 증진하고, 웹 애플리케이션 보안을 높이기 위한 지침을 제공하는데 사용됨
    1. 인젝션 (Injection) : SQL, OS, LDAP 등의 쿼리를 조작하여 공격하는 것
    2. 권한 부여 및 인증(Authentication and Authorization) : 인증 없이 애플리케이션의 기능을 이용할 수 있는 취약점
    3. 감사 로그 (Audit Logging) : 보안 감사 로그를 제대로 수집하지 않는 취약점
    4. 노출된 지점 (Sensitive Data Exposure) : 민감한 정보가 공격자에게 노출되는 취약점
    5. 보안 설정 (Security Misconfiguration) : 제대로 설정되지 않은 서버, 프레임워크, 플랫폼 등에 대한 취약점
    6. 크로스 사이트 스크립팅(XSS) (Cross-Site Scripting) : 공격자가 코드를 삽입하여 사용자의 브라우저에서 실행되도록 하는 취약점
    7. 교착 상태 (Insecure Deserialization) : 데이터를 시리얼화하는 프로세스에서 발생하는 취약점
    8. 링크 희생 (Broken Access Control) : 인증되지 않은 사용자가 접근할 수 있는 기능이나 자원에 대한 제어가 제대로 되어 있지 않은 취약점
    9. 사용하지 않는 자원 (Using Components with Known Vulnerabilities) : 알려진 보안 취약점이 있는 소프트웨어 구성 요소를 사용하는 취약점
    10. 신뢰되지 않는 입력 (Insufficient Logging and Monitoring) : 충분한 로그 및 모니터링이 없는 경우, 악성 코드나 공격자에게 민감한 데이터가 노출될 수 있는 취약점