Skip to content

Commit fd1fb01

Browse files
authored
Merge pull request #98 from Dennis-Emmental/master
missing transaltion is added
2 parents 479bacb + 4b83ebb commit fd1fb01

1 file changed

Lines changed: 25 additions & 17 deletions

File tree

README-ko.md

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,53 @@
11
[English](./README.md) | [繁中版](./README-tw.md) | [簡中版](./README-zh.md) | [Português (Brasil)](./README-pt_BR.md) | [Français](./README-fr.md) | [Nederlands](./README-nl.md) | [Indonesia](./README-id.md) | [ไทย](./README-th.md) | [Русский](./README-ru.md) | [Українська](./README-uk.md) | [Español](./README-es.md) | [Italiano](./README-it.md) | [日本語](./README-ja.md) | [Deutsch](./README-de.md) | [Türkçe](./README-tr.md) | [Tiếng Việt](./README-vi.md) | [Монгол](./README-mn.md) | [हिंदी](./README-hi.md) | [العربية](./README-ar.md) | [Polski](./README-pl.md)
22

3-
# API 보안 체크리스트
4-
API를 설계하고 테스트하고 배포할 때 고려해야 할 중요한 보안 대책 체크리스트입니다.
3+
# API 보안 점검표
4+
API를 설계하고 테스트하고 배포할 때 고려해야 할 중요한 보안 대책 점검입니다.
55

66

77
---
88

99
## 인증 (Authentication)
1010
- [ ] `Basic Auth`를 사용하지 말고 표준 인증방식을 사용하세요. (예로, JWT, OAuth 등)
1111
- [ ] `인증`, `토큰 생성`, `패스워드 저장`은 직접 개발하지 말고 표준을 사용하세요.
12+
- [ ] 로그인에서 `Max Retry`와 격리 기능을 사용하세요.
13+
- [ ] 민감한 데이터는 암호화하세요.
1214

1315
### JWT (JSON Web Token)
1416
- [ ] 무작위 대입 공격을 어렵게 하기 위해 랜덤하고 복잡한 키값 (`JWT Secret`)을 사용하세요.
1517
- [ ] 요청 페이로드에서 알고리즘을 가져오지 마세요. 알고리즘은 백엔드에서 강제로 적용하세요. (`HS256` 혹은 `RS256`)
16-
- [ ] 토큰 만료기간 (`TTL`, `RTTL`)은 되도록 짧게 설정하세요.
18+
- [ ] 토큰 만료 기간 (`TTL`, `RTTL`)은 되도록 짧게 설정하세요.
1719
- [ ] JWT 페이로드는 [디코딩이 쉽기](https://jwt.io/#debugger-io) 때문에 민감한 데이터는 저장하지 마세요.
1820

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

2527
## 접근 (Access)
26-
- [ ] DDoS나 무작위 대입 공격을 피하려면 요청수를 제한하세요. (Throttling)
27-
- [ ] MITM (중간자 공격)을 피하려면 서버단에서 HTTPS를 사용하세요.
28+
- [ ] DDoS나 무작위 대입 공격을 피하려면 요청 수를 제한하세요. (Throttling)
29+
- [ ] MITM (중간자 공격)을 피하려면 서버 단에서 HTTPS를 사용하세요.
2830
- [ ] SSL Strip 공격을 피하려면 `HSTS` 헤더를 SSL과 함께 사용하세요.
2931

3032
## 입력 및 요청 (Input)
3133
- [ ] 각 요청 연산에 맞는 적절한 HTTP 메서드를 사용하세요. `GET (읽기)`, `POST (생성)`, `PUT (대체/갱신)`, `DELETE (삭제)`
32-
- [ ] 여러분이 지원하는 포맷 (예를 들어 `application/xml`이나 `application/json` 등)만을 허용하기 위해서는 요청의 Accept 헤더의 `content-type`을 검증하여 매칭되는게 없을 경우엔 `406 Not Acceptable`로 응답하세요.
33-
- [ ] 요청 받은 POST 데이터의 `content-type`을 검증하세요. (예를 들어 `application/x-www-form-urlencoded``multipart/form-data` 또는 `application/json` 등)
34+
- [ ] 여러분이 지원하는 포맷 (예를 들어 `application/xml`이나 `application/json` 등)만을 허용하기 위해서는 요청의 Accept 헤더의 `content-type`을 검증하여 매칭되는 게 없을 경우엔 `406 Not Acceptable`로 응답하세요.
35+
- [ ] 요청받은 POST 데이터의 `content-type`을 검증하세요. (예를 들어 `application/x-www-form-urlencoded``multipart/form-data` 또는 `application/json` 등)
3436
- [ ] 일반적인 취약점들을 피하기 위해선 사용자 입력의 유효성을 검증하세요. (예를 들어 `XSS`, `SQL-Injection` 또는 `Remote Code Execution` 등)
35-
- [ ] URL에는 그 어떤 민감한 데이터 (`자격 인증 (crendentials)`, `패스워드`, `보안 토큰` 또는 `API 키`)도 포함하고 있어서는 안되며 이러한 것들은 표준 인증 방식의 헤더를 사용하세요.
37+
- [ ] URL에는 그 어떤 민감한 데이터 (`자격 인증 (crendentials)`, `패스워드`, `보안 토큰` 또는 `API 키`)도 포함하고 있어서는 안 되며 이러한 것들은 표준 인증 방식의 헤더를 사용하세요.
38+
- [ ] 캐싱과 속도 제한 정책을(예를 들어 `Quota`, `Spike Arrest`, `Concurrent Rate Limit`) 제공하는 API 게이트웨이 서비스를 사용하세요. 그리고 API 리소스를 동적으로 배포하세요.
3639

3740
## 서버 처리
3841
- [ ] 잘못된 인증을 피하기 위해 모든 엔드포인트가 인증 프로세스 뒤에서 보호되고 있는지 확인하세요.
39-
- [ ] 사용자의 리소스 식별자를 사용하는건 지양하세요. `/user/654321/orders` 대신 `/me/orders`를 사용하세요.
42+
- [ ] 사용자의 리소스 식별자를 사용하는 건 지양하세요. `/user/654321/orders` 대신 `/me/orders`를 사용하세요.
4043
- [ ] 자동 증가 (auto-increment) 식별자 대신 `UUID`를 사용하세요.
41-
- [ ] XML 파일을 파싱하고 있다면, `XXE` (XML 외부 엔티티 공격, XML external entity attack)를 피하기 위해 엔티티 파싱을 비활성화 하세요.
42-
- [ ] XML 파일을 파싱하고 있다면, 지수적 엔티티 확장 공격을 통한 빌리언 러프/XML 폭탄을 피하기 위해 엔티티 확장을 비활성화 하세요.
44+
- [ ] XML 파일을 파싱하고 있다면, `XXE` (XML 외부 엔티티 공격, XML external entity attack)를 피하기 위해 엔티티 파싱을 비활성화하세요.
45+
- [ ] XML 파일을 파싱하고 있다면, 지수적 엔티티 확장 공격을 통한 빌리언 러프/XML 폭탄을 피하기 위해 엔티티 확장을 비활성화하세요.
4346
- [ ] 파일 업로드에는 CDN을 사용하세요.
4447
- [ ] 거대한 양의 데이터를 다루고 있다면, HTTP 블로킹을 피하고 응답을 빠르게 반환하기 위해 워커나 큐를 사용하세요.
45-
- [ ] 디버그 모드를 꺼놓는일은 절대 잊지 마세요.
48+
- [ ] 디버그 모드를 꺼놓는 일을 절대 잊지 마세요.
4649

47-
## 반환 및 응답
50+
## 반환 및 응답 (Output)
4851
- [ ] `X-Content-Type-Options: nosniff` 헤더를 반환하세요.
4952
- [ ] `X-Frame-Options: deny` 헤더를 반환하세요.
5053
- [ ] `Content-Security-Policy: default-src 'none'` 헤더를 반환하세요.
@@ -53,6 +56,11 @@ API를 설계하고 테스트하고 배포할 때 고려해야 할 중요한 보
5356
- [ ] `자격 인증 (crendentials)`, `패스워드`, `보안 토큰`과 같은 민감한 데이터는 반환하지 마세요.
5457
- [ ] 각 연산에 맞는 적절한 상태 코드를 반환하세요. (예를 들어 `200 OK`, `400 Bad Request`, `401 Unauthorized`, `405 Method Not Allowed` 등)
5558

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

5765
---
5866

@@ -62,5 +70,5 @@ API를 설계하고 테스트하고 배포할 때 고려해야 할 중요한 보
6270

6371
---
6472

65-
# 기여하는
66-
Feel free to contribute by forking this repository, making some changes, and submitting pull requests. For any questions drop us an email at `team@shieldfy.io`.
73+
# 기여하기
74+
이 저장소를 분기, 변경, pull request를 보내는 것으로 자유롭게 기여하세요. 질문은 `team@shieldfy.io`로 이메일을 보내주세요.

0 commit comments

Comments
 (0)