Offcanvas

CIO / How To / 개발자 / 검색|인터넷 / 디지털 트랜스포메이션 / 애플리케이션

‘연동의 시대 주인공이지만…’ 피해야 할 API 실수 14가지

2022.02.10 Peter Wayner  |  CIO
“좋은 울타리가 좋은 이웃을 만든다.” 로버트 프로스트는 오래전 이렇게 이야기했다.

좋은 API는 좋은 코드의 필수적 요소다. 이것들은 프로젝트를 분리하고 라이브러리를 생성하며 업무를 공유할 때 개발자가 그리는 경계선이다. 로버트 프로스트가 지금까지 살아 있었다면 API에 관한 시를 썼을 것이다.

API가 비즈니스의 기초가 되고 있다. 단순히 데이터와 의사결정 정보의 게이트웨이가 아니라 수익 창출을 위해 고안되고 있다. 이제 API는 사용자를 추적하고 청구를 위한 올바른 방법을 찾는다.
 
이런 API를 만드는 것은 TCP/IP 포트를 열고 돈이 굴러 들어오기를 기다리는 것만큼 단순하지 않다. API는 인터넷에 있는 모든 장치로부터 요청을 받고, 악의가 있는 사람들과 결백한 사람들이 모두 기업의 분을 두드리기 시작한다. 문제는 적합한 개발자가 사용하기 쉽고 환영할 만하면서 악당들이 침투할 수 없는 API를 만드는 것이다.

API 전략의 실수를 유도할 수 있는 14가지 보편적인 API 문제를 살펴본다.
 
Image Credit : Getty Images Bank


탈출 비용 간과
많은 클라우드 제공자들이 각종 비용을 청구하며 이중 일부는 간과되기 쉽다. 시간당 기계 비용은 분명하지만 많은 사람들이 청구서에 ‘데이터 탈출’이 포함될 수 있다는 사실을 잊어버린다. API의 핵심 기능은 데이터를 사용자에게 탈출시키는 것이다. API 가격 책정 시 그리고 아키텍처 구상 시 이 비용을 고려해야 한다.

‘데이터 포맷 세금’ 무시
XML 등의 일부 데이터 형식은 다른 것들만큼 효율적이지 않다. API가 반환하는 데이터 패킷의 크기에 영향을 미칠 수 있다. 데이터 형식에서 추가적인 태그와 불편한 것들을 없앰으로써 회사의 비용을 40% 이상 절감하는 사례가 있을 정도다. 데이터 형식을 가능한 가볍게 유지하고 데이터를 필요한 비트에만 집중시켜 대역폭 비용을 관리한다.

장식적 기능 간과
때로는 API 개발자는 다소 멋으로 덧붙이는 기능을 포함시킨다. 대부분의 경우에는 사용하지 않더라도 문제가 발생하지 않는다. 하지만 알려지지 않은 보안 구멍이 남아 있을 수 있다.

임의 코드를 실행하는 기능을 Log4J 라이브러리에 추가한 프로그래머는 인터넷 역사상 최악의 보안 버그를 만들 계획이 아니었을 것이다. 그러나 사람들이 거의 사용하지 않는 이 기능이 불러올 위험성에 관해 잊어버렸을 때 그런 상황이 발생했다. 이런 경우에는 너무 창의적이거나 똑똑하지 않은 것이 도움이 된다. 최소한을 고수하는 것이 항상 훌륭한 제품을 개발하는 최고의 방법은 아니지만 안전한 API를 만드는 좋은 방법일 수 있다.

사전 필터링 잊어버리기
대부분의 API는 별다른 기능이 없다. 입력값을 받아 다른 코드로 전달한다. API가 제공할 수 있는 최고의 서비스는 사전 필터링을 통해 입력값이 기대치와 일치하는지 확인하는 것이다. 다수의 악성 보안 공격의 일부 API의 안일한 호의를 악용하여 버퍼를 넘치게 하거나 SQL 주입 공격을 시도한 것들이었다.

테스트에 인색하기
많은 개발자들이 기본적인 몇 가지 테스트 URL을 보유하고 있다. API로부터 적절한 패킷이 반환되면 모든 것이 원활하게 작동한다고 가정한다. 그러나 현실에서는 테스트 결과가 캐시 처리되고 단순한 테스트 URL은 첫 번째 레이어만 실행하는 경우가 많다. 좋은 테스트 스위트는 데이터베이스와 보조 API 또는 서비스에 대한 연결 등 API의 모든 부분을 평가한다.

잘못된 CORS 구성
CORS(Cross-Origin Resource Sharing) 문제는 브라우저에서 API의 응답이 직접 다른 콘텐츠와 혼합될 때 나타날 수 있다. 서둘러 API를 사용하는 일부 API 사용자에게는 문제가 될 수 있다. 때로는 태그 ACAO(Access-Control-Allow-Origin)를 헤더에 추가해야 한다. 때로는 스택에 완전 프록시를 구축하는 것이 낫다.

잘못된 인증 선택
API와 관련해 적절한 양의 인증을 파악하는 것도 중요하다. 일부 데이터는 과도하게 민감하지 않다. 이러한 API의 유일한 기능은 사용자를 추적하여 청구서를 파악하는 것이다. 이런 단순한 경우에는 변경되지 않는 무작위 키로 충분할 수 있다. 하지만 놀랍도록 민감할 수 있는 개인 정보를 다뤄야 하는 API들도 있다. 이런 경우 OAuth 2.0, OpenID, JWT 등의 더욱 안전한 프로토콜이 더 나은 선택이다. 프로토콜의 양쪽을 위한 좋은 라이브러리가 이미 존재하기 때문에 보안 업그레이드 시 새 코드를 많이 작성할 필요가 없다.
 

CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
추천 테크라이브러리

회사명:한국IDG 제호: CIO Korea 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아01641 등록발행일자 : 2011년 05월 27일

발행인 : 박형미 편집인 : 천신응 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.