API 보안 점검표

2019.02.08 14:57

졸리운_곰 조회 수:105

 

API 보안 점검표

API를 설계하고, 테스트하고, 배포할 때 고려해야 할 중요한 보안 대책에 대한 점검 목록입니다.


인증 (Authentication)

  •  Basic Auth를 사용하지 말고 표준 인증방식을 사용하세요. (예로, JWT, OAuth 등)
  •  인증토큰 생성패스워드 저장은 직접 개발하지 말고 표준을 사용하세요.
  •  로그인에서 Max Retry와 격리 기능을 사용하세요.
  •  민감한 데이터는 모두 암호화하세요.

JWT (JSON Web Token)

  •  무작위 대입 공격을 어렵게 하기 위해 랜덤하고 복잡한 키값 (JWT Secret)을 사용하세요.
  •  요청 페이로드에서 알고리즘을 가져오지 마세요. 알고리즘은 백엔드에서 강제로 적용하세요. (HS256 혹은 RS256)
  •  토큰 만료 기간 (TTLRTTL)은 되도록 짧게 설정하세요.
  •  JWT 페이로드는 디코딩이 쉽기 때문에 민감한 데이터는 저장하지 마세요.

OAuth

  •  허용된 URL만 받기 위해서는 서버 단에서 redirect_uri의 유효성을 항상 검증하세요.
  •  항상 토큰 대신 코드를 주고받으세요. (response_type=token을 허용하지 마세요)
  •  OAuth 인증 프로세스에서 CSRF를 방지하기 위해 랜덤 해쉬값을 가진 state 파라미터를 사용하세요.
  •  디폴트 스코프를 정의하고 각 애플리케이션마다 스코프 파라미터의 유효성을 검증하세요.

접근 (Access)

  •  DDoS나 무작위 대입 공격을 피하려면 요청 수를 제한하세요. (Throttling)
  •  MITM (중간자 공격)을 피하려면 서버 단에서 HTTPS를 사용하세요.
  •  SSL Strip 공격을 피하려면 HSTS 헤더를 SSL과 함께 사용하세요.

입력 및 요청 (Input)

  •  각 요청의 연산에 맞는 적절한 HTTP 메서드를 사용하세요. GET (읽기)POST (생성)PUT (대체/갱신)DELETE (삭제). 그리고 요청 메소드가 리소스에 적합하지 않은 경우 405 Method Not Allowed로 응답하세요.
  •  여러분이 지원하는 포맷 (예를 들어 application/xml이나 application/json 등)만을 허용하려면 요청의 Accept 헤더에서 content-type의 유효성을 검사하고 일치하지 않으면 406 Not Acceptable로 응답하세요.
  •  요청받은 POST 데이터의 content-type을 검증하세요. (예를 들어 application/x-www-form-urlencoded나 multipart/form-data 또는 application/json 등)
  •  일반적인 취약점들을 피하기 위해선 사용자 입력의 유효성을 검증하세요. (예를 들어 XSSSQL-Injection 또는 Remote Code Execution 등)
  •  URL에는 그 어떤 민감한 데이터 (자격 인증 (credentials)패스워드보안 토큰 또는 API 키)도 포함하고 있어서는 안 되며 이러한 것들은 표준 인증 방식의 헤더를 사용하세요.
  •  캐싱과 속도 제한 정책을 제공하는 API 게이트웨이 서비스 (예를 들어 QuotaSpike ArrestConcurrent Rate Limit)를 사용하고, API 리소스를 동적으로 배포하세요.

서버 처리

  •  인증 프로세스가 손상되는 것을 피하기 위해 모든 엔드포인트가 인증 프로세스 뒤에서 보호되고 있는지 확인하세요.
  •  사용자 소유의 리소스 식별자는 피해야 합니다. /user/654321/orders 대신 /me/orders를 사용하세요.
  •  자동 증가 (auto-increment) 식별자 대신 UUID를 사용하세요.
  •  XML 파일을 파싱하고 있다면, XXE (XML 외부 엔티티 공격, XML external entity attack)를 피하기 위해 엔티티 파싱을 비활성화하세요.
  •  XML 파일을 파싱하고 있다면, 지수적 엔티티 확장 공격을 통한 빌리언 러프/XML 폭탄을 피하기 위해 엔티티 확장을 비활성화하세요.
  •  파일 업로드에는 CDN을 사용하세요.
  •  거대한 양의 데이터를 다루고 있다면, 워커나 큐를 사용하여 가능한 한 백그라운드에서 처리하고, HTTP 블로킹을 피하기 위해 응답을 빠르게 반환하세요.
  •  디버그 모드를 꺼놓는 일을 절대 잊지 마세요.

반환 및 응답 (Output)

  •  X-Content-Type-Options: nosniff 헤더를 반환하세요.
  •  X-Frame-Options: deny 헤더를 반환하세요.
  •  Content-Security-Policy: default-src 'none' 헤더를 반환하세요.
  •  X-Powered-ByServerX-AspNet-Version 등의 디지털 지문 (fingerprinting) 성격의 헤더는 제거하세요.
  •  응답에 content-type을 강제하세요. 만약 application/json 데이터를 반환하고 있다면 응답의 content-type은 application/json입니다.
  •  자격 인증 (credentials)패스워드보안 토큰과 같은 민감한 데이터는 반환하지 마세요.
  •  각 작업에 맞는 적절한 상태 코드를 반환하세요. (예를 들어 200 OK400 Bad Request401 Unauthorized405 Method Not Allowed 등)

CI & CD

  •  단위/통합 테스트 범위로 설계 및 구현을 검토하세요.
  •  코드 리뷰 절차를 사용하고 자체 승인을 무시하세요.
  •  제품 출시전에 백신 소프트웨어로 공급 업체의 라이브러리 및 기타 종속적인 것을 포함한 서비스의 모든 구성 요소들을 정적으로 검사했는지 확인하세요.
  •  배포에 대한 롤백 솔루션을 설계하세요.

참조 :

 

[출처] https://github.com/shieldfy/API-Security-Checklist/blob/master/README-ko.md

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
798 한자능력시험 배정한자 1급 ~ 8급 file 졸리운_곰 2019.03.19 278
797 빠르게 서비스를 개발할 수 있는 Node.js 졸리운_곰 2019.03.14 213
796 Top Libraries + Tech to Learn in 2019 for Full Stack Developers file 졸리운_곰 2019.03.09 312
795 뽀모도로 기법을 활용한 효율적인 시간 관리 방법 file 졸리운_곰 2019.03.07 178
794 대화형 AI 시스템의 분류 졸리운_곰 2019.03.05 124
793 UUID 생성 함수 uuidgen() file 졸리운_곰 2019.02.27 253
792 IT 인프라 이전 서비스 업무절차 file 졸리운_곰 2019.02.25 129
791 시스템이전대행 서비스 업무절차 file 졸리운_곰 2019.02.25 117
790 Sink (computing) 싱크 (컴퓨팅)에서의 의미 졸리운_곰 2019.02.24 108
789 Architect Blockchain Applications as Microservices file 졸리운_곰 2019.02.22 115
788 인공 지능을 사용하여 글쎄 T 셔츠를 획득하기위한 GUI의 깊은 학습 도구 "CSLAIER"를 사용해 본 file 졸리운_곰 2019.02.19 149
787 All-in-one Docker image for Deep Learning file 졸리운_곰 2019.02.19 111
786 Deep Learning Box with Ubuntu 18.04 file 졸리운_곰 2019.02.19 115
785 파워포인트 ppt에서 html 추출 : How to convert from Powerpoint to HTML / CSS ? (FOSS) 졸리운_곰 2019.02.13 130
» API 보안 점검표 졸리운_곰 2019.02.08 105
783 애드센스 자동광고 설정하기 file 졸리운_곰 2019.02.06 408
782 대학생 독후감 양식 잘 쓰고 싶다면? file 졸리운_곰 2019.02.05 530
781 독서 영화 감상문 양식 모음 file 졸리운_곰 2019.02.05 357
780 [리포트 작성 노하우] 교수님이 귀띔하는 A+ 리포트의 조건 file 졸리운_곰 2019.02.05 132
779 React Native, Xamarin 은 한국에서 안팔려 file 졸리운_곰 2019.01.25 96
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED