웹 애플리케이션 보안 사항

웹 애플리케이션 구성 시 다음과 같은 보안 사항들을 염두해 두어야 합니다.

1. 인증과 인가

  • 사이트 접근을 허용하는 사용자를 인증하고, 인증된 사용자에게만 적절한 권한을 부여하여 인가해야 함
  • 사용자 인증을 위해 안전한 인증 메커니즘(ex: OAuth, JWT 등)을 사용하고, 인가된 사용자의 권한을 관리하는데 적절한 접근 제어를 설정

2. 크로스 사이트 스크립팅 (XSS) 공격 방지

  • 악의적인 스크립트가 웹 페이지에 삽입되어 사용자의 브라우저에서 실행되는 공격
  • 입력값을 적절히 필터링하고, 출력 시 HTML 인코딩을 수행하여 스크립트 실행을 방지

3. 크로스 사이트 요청 위조 (CSRF) 공격 방지

  • 사용자가 자신의 의지와 무관하게 인증된 상태에서 악의적인 요청을 보내는 공격
  • CSRF 토큰을 사용하여 요청의 유효성을 검증하고, 브라우저와 서버 간의 상태를 확인하여 위조 요청 방지

4. SQL 인젝션 방지

  • 서버 요청 시 악의적인 SQL 쿼리를 삽입하여 데이터베이스를 공격하는 공격
  • 입력값을 적절히 필터링하고, SQL 파라미터화를 통해 방지

5. 세션 관리

  • 세션 ID를 안전하게 관리하지 않으면 세션 하이재킹 등의 공격을 받을 수 있음
  • 세션 ID를 안전한 방법으로 저장하고 전송하며, 세션 만료 시간을 설정하여 세션 관리를 강화

6. 보안 헤더 설정

  • 웹 서버에서 보안 헤더를 설정하여 웹 애플리케이션의 보안성을 향상
  • Content Security Policy(CSP), X-Content-Type-Options, X-Frame-Options, X-XSS-Protection 등의 보안 헤더를 설정

7. 파일 업로드 보안

  • 파일 업로드 시 파일 확장자, 크기, 유형 등을 검증하지 않으면 악성 파일 업로드에 이용될 수 있음
  • 업로드된 파일을 신뢰할 수 있는 파일 서버에 저장하고, 파일 유효성 검사를 수행

8. 비밀번호 저장

  • 해시 함수와 솔트(Salt)를 사용하여 암호화

9. 보안 업데이트

  • 데이터베이스를 모니터링하고, 보안 소프트웨어 패치를 즉시 적용하여 시스템의 취약성을 최소화