728x90
반응형
오늘 본 내용
- 인증
- BASIC AUTH를 사용하지 마세요. 대신 표준 인증(JWT 등)을 사용하세요.
- 인증, 토큰 생성, 비밀번호 저장에서 새로운 방법을 개발하지 마세요.
- 표준을 사용하세요.
- 로그인에서 최대 재시도 및 감옥 기능을 사용하세요.
- 모든 민감한 데이터에 대해 암호화를 사용합니다.
- 무작위 복잡한 키(JWT SECRET)를 사용하여 토큰의 무차별 대입 공격을 매우 어렵게 만드세요.
- 헤더에서 알고리즘을 추출하지 마세요. 백엔드에서 알고리즘을 강제하세요(HS256 또는 RS256).
- 토큰 만료(TTL, RTTL)를 가능한 짧게 설정하세요.
- JWT 페이로드에 민감한 데이터를 저장하지 마세요. 이는 쉽게 디코딩될 수 있습니다.
- 너무 많은 데이터를 저장하지 마세요. JWT는 일반적으로 헤더에서 공유되며, 이에는 크기 제한이 있습니다.
- 접근
- DDOS / 무차별 대입 공격을 방지하기 위해 요청을 제한(스로틀링)하세요.
- 서버 측에서 HTTPS를 사용하고 TLS 1.2+ 및 안전한 암호를 사용하여 MITM(중간자 공격)을 방지하세요.
- SSL STRIP 공격을 방지하기 위해 SSL과 함께 HSTS 헤더를 사용하세요.
- 디렉토리 목록을 끄세요.
- 개인 API의 경우, 화이트리스트에 등록된 IP/호스트만 접근을 허용하세요.
- 권한 부여
- 항상 서버 측에서 REDIRECT_URI를 검증하여 화이트리스트에 등록된 URL만 허용하세요.
- 항상 토큰 대신 코드를 교환하려고 시도하세요(응답 유형=토큰 허용 안 함).
- OAUTH 인증 과정에서 CSRF를 방지하기 위해 무작위 해시와 함께 상태 매개변수를 사용하세요.
- 기본 범위를 정의하고, 각 응용 프로그램에 대한 범위 매개변수를 검증하세요.
- 입력
- 작업에 따라 적절한 HTTP 메서드를 사용하세요: GET (읽기), POST (생성), PUT/PATCH (대체/업데이트), DELETE (레코드 삭제), 그리고 요청된 리소스에 대해 요청된 메서드가 적절하지 않은 경우 405 메서드 허용 안 됨으로 응답하세요.
- 요청 수락 헤더(CONTENT NEGOTIATION)의 CONTENT-TYPE를 검증하여 자신이 지원하는 형식만 허용하세요 (예: APPLICATION/XML, APPLICATION/JSON 등). 일치하지 않는 경우 406 허용되지 않는 응답으로 응답하세요.
- 수락하는 POSTED DATA의 CONTENT-TYPE을 검증하세요 (예: APPLICATION/X-WWW-FORM-URLENCODED, MULTIPART/FORM-DATA, APPLICATION/JSON 등).
- 일반적인 취약점 (예: XSS, SQL 인젝션, 원격 코드 실행 등)을 피하기 위해 사용자 입력을 검증하세요.
- URL에 민감한 데이터(자격 증명, 비밀번호, 보안 토큰, API 키)를 사용하지 마세요, 대신 표준 권한 부여 헤더를 사용하세요. 서버 측 암호화만 사용하세요.
- 캐싱, 속도 제한 정책 (예: 할당량, SPIKE ARREST, 또는 동시 속도 제한)을 활성화하고 API 리소스를 동적으로 배포하기 위해 API 게이트웨이 서비스를 사용하세요.
- 출력
- X-CONTENT-TYPE-OPTIONS: NOSNIFF 헤더를 보내세요.
- X-FRAME-OPTIONS: DENY 헤더를 보내세요.
- CONTENT-SECURITY-POLICY: DEFAULT-SRC 'NONE' 헤더를 보내세요.
- 지문 인식 헤더 - X-POWERED-BY, SERVER, X-ASPNET-VERSION 등을 제거하세요.
- 응답에 대한 CONTENT-TYPE을 강제하세요. APPLICATION/JSON을 반환하면, CONTENT-TYPE 응답은 APPLICATION/JSON입니다.
- 자격 증명, 비밀번호, 보안 토큰 같은 민감한 데이터를 반환하지 마세요.
- 완료된 작업에 따라 적절한 상태 코드를 반환하세요 (예: 200 OK, 400 BAD REQUEST, 401 UNAUTHORIZED, 405 METHOD NOT ALLOWED 등).
고민하고 생각해 볼 내용
- 현재 미준수하고 있는 체크리스트가 있는지 확인하기
- 미준수하고 있다면 취약점 우선순위 파악하고 필요한지 검토하기
728x90
반응형