웹 애플리케이션 보안 사항
웹 애플리케이션 구성 시 다음과 같은 보안 사항들을 염두해 두어야 합니다.
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. 보안 업데이트
- 데이터베이스를 모니터링하고, 보안 소프트웨어 패치를 즉시 적용하여 시스템의 취약성을 최소화