일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 웹개발
- 버전관리
- 네트워크
- 클라우드컴퓨팅
- 컴퓨터비전
- I'm Sorry
- 데이터구조
- 프로그래밍
- Yes
- 데이터베이스
- 2
- 자바스크립트
- 컴퓨터공학
- 딥러닝
- 소프트웨어공학
- 자료구조
- 데이터과학
- 보안
- 파이썬
- 알고리즘
- 머신러닝
- 프로그래밍언어
- 사이버보안
- 컴퓨터과학
- 데이터분석
- 소프트웨어
- 코딩
- 네트워크보안
- 빅데이터
- 인공지능
- Today
- Total
스택큐힙리스트
누군가 토큰을 도난당하지 않고 모바일 앱에서 API를 사용하는 방법 본문
나는 OpenAI API를 활용하는 앱을 만들고 있습니다.
그들은 안드로이드 모바일 앱(리액트 네이티브)에서 API 호출을하기 위해 사용하는 API 토큰을 제공합니다.
이 API 토큰을 모바일 클라이언트에 저장하는 것은 나쁜 실천이라고 알고 있습니다. 공격자들이 이를 도용하여 내 할당량과 돈을 사용할 수 있기 때문입니다.
내 선택지는 뭔가요? 사소한 해결책은 백엔드를 구축하는 것이지만, 원래의 API 메소드를 모두 구현하기 시작하고 싶지 않아서 클라이언트에서 직접 사용하는 것을 선호합니다.
저는 토큰을 찾을 수 없는 방식으로 저장해보려고 했지만, 방법을 찾지 못했습니다.
답변 1
당신의 문제
그들은 저에게 안드로이드 모바일 앱(리액트 네이티브)에서 API 호출을 만들기 위해 사용하는 API 토큰을 제공합니다.
나는 모바일 클라이언트에 이 API 토큰을 저장하는 것이 나쁜 실천 방식이라는 것을 알고 있습니다. 공격자들이 이것을 도용하여 내 할당량과 돈을 사용할 수 있기 때문입니다.
그 맞습니다. 사실, 이것은 매우 나쁜 습관이지만, 당신은 위험을 알고 있기 때문에, 다른 사람들이 얼마나 쉽게 해커가 이러한 비밀 (API 토큰, API 키 등)을 잡을 수 있는지를 깨닫지 못하는 것보다는 나은 것입니다.
나는 모바일 API 보안에 대해 쓴 일련의 기사에서 정적 분석과 MitM 공격으로 얼마나 쉽게 수행될 수 있는지 보여줬습니다.
There is no specific meaning or context provided for the given text, so it cannot be accurately translated into Korean.
오픈 소스 역공학 도구 범위는 엄청나며, 이 글에서는 이 주제를 살펴볼 수 없지만, 대신 %#&@^&^&$&을 사용하여 모바일 앱의 APK를 역공학하는 방법을 보여줍니다. MobSF는 매력적인 대시 보드에서 결과를 제시하는 오픈 소스 도구 모음이지만, MobSF 내부 및 다른 곳에서 사용되는 동일한 도구를 개별적으로 사용하여 동일한 결과를 얻을 수 있습니다.
이 문서에서는 API 키가 여러 가지 기술을 사용하여 숨겨진 더미 모바일 앱인 Android Hide Secrets 연구 자료 저장소를 사용하겠습니다.
일부 공격자들은 중간자 공격을 바로 실행하기를 선호합니다. 이는 앱이 API 백엔드와 어떻게 통신하는지, 사용되는 비밀번호와 요청 및 응답 구문 분석을 위해 필요한 청사진을 파악할 수 있기 때문입니다.
이상한 문자입니다. 번역이 불가능합니다.
API 키를 훔치는 방법을 보여주기 위해 이전에 사용한 Android Hide Secrets 앱과 동일한 JNI/NDK 기술을 사용하는 안드로이드용 Currency Converter Demo 어플리케이션을 Github에 만들어 공개했습니다.
그래서 이 기사에서는 제어하고있는 모바일 장치에서 https 트래픽을 가로채어 API 키를 훔치기 위해 MitM 공격을 설정하고 실행하는 방법을 배우게 됩니다. 마지막으로, MitM 공격을 완화하는 방법에 대한 고수준 개요를 볼 수 있습니다.
가능한 해결책들
역방향 프록시
소규모 해결책은 백엔드를 만드는 것입니다. 하지만 나는 원래 API 메소드를 모두 구현하기 시작하고 싶지 않습니다. 나는 그냥 클라이언트에서 직접 사용하는 것을 선호합니다.
당신은 필요하지 않습니다. 단지 백엔드가 모바일 앱에서 사용하는 Third Party API 요청을 프록시하면 되는 것이며, 당신의 경우에는 OpenAPI에만 해당됩니다.
예를 들어, 모바일 앱에서 openapi.io/some/resource로 요청을 보내야 할 때, 대신 .com/some/resource that will then grab 로 보내게 되고, 그것이 part and build the r 부분을 가져와 OpenAPI openapi.io/some/resource 로 요청을 구성하고 API 토큰 헤더를 추가하여 안전하게 Reverse Proxy 서버에 저장됩니다.
Using a Reverse Proxy to Protect Third Party APIs
이 글에서는 Third Party API가 무엇이며, 모바일 앱 내에서 직접 액세스해서는 안 되는 이유를 먼저 배우고, 그다음 Reverse Proxy가 무엇인지, 모바일 앱에서 사용되는 Third Party API의 액세스 보호를 위해 언제 어떻게 사용해야 하는지에 대해서 배우게 됩니다.
이 기사에서 재발하는 테마 중 하나는 Third Party APIs에 직접 접근하지 않는 것입니다. 우리가 논의한 대로, 모바일 앱이 출시되면 그 안의 모든 비밀은 공개됩니다. 따라서 공격자가 당신 대신 사용할 수 있도록 손에 건네집니다. 조심하지 않으면 당신이 청구서를 지불하거나 무료 기간 리소스가 다른 사람에 의해 고갈되는 결과를 볼 수도 있습니다.
이 방법의 문제점은 여전히 보안이 필요한 API 키가 있다는 것입니다. 하지만 OpenApi 비밀을 노출하지 않으며 요청 제한 및 역방향 프록시 액세스 보안 등 여러 가지 메커니즘을 사용하여 모바일 앱의 실제 및 수정되지 않은 인스턴스의 요청에 대한 응답 만 보장할 수 있습니다.
런타임 비밀 보호
당신은 오프 더 셀프 메커니즘을 고안하거나 사용하여 모바일 앱에 필요한 API 요청을 할 때 필요한 순간에 비밀 정보를 전달할 수 있지만, 미들맨 공격(MitM)을 받지 않은 정규 및 변경되지 않은 모바일 앱에서만 비밀 정보가 전달될 수 있도록 해야 합니다. 또한, Frida와 같은 런타임 도구로 조작/도구화되지 않은 인스턴스에서만 전달되어야 하며, API 요청에서 헤더에 추가하는 함수에 후킹하거나 MitM 공격으로 요청을 가로챌 때 비밀 정보가 쉽게 추출될 수 있습니다. 통신 채널이 인증서 핀을 사용하여 보호되더라도, 공격자가 제어하는 장치에서 우회하기 쉽기 때문입니다.
my reply에 대한 질문 Storing Api Keys Securely in Flutter or Sending Payment Details to my Server?에 대해서 런타임 비밀 보호 접근 방법에 대해 자세하게 설명하겠습니다.
당신은 추가적인 노력을 하고 싶습니까?
보안 질문에 대한 어떤 답변이든지 저는 언제나 OWASP 재단의 훌륭한 작업을 참조하고 싶습니다.
APIS에 대해
OWASP API Security Top 10
OWASP API 보안 프로젝트는 불안정한 API의 잠재적 위험성을 강조하고 이러한 위험성을 완화하는 방법을 설명함으로써 소프트웨어 개발자 및 보안 평가자에게 가치를 제공하려고 합니다. 이러한 목표를 달성하기 위해, OWASP API 보안 프로젝트는 상위 10개 API 보안 위험성 문서 및 API 생성 또는 평가 시 최상의 실천 방법을 문서화하는 포털을 생성하고 유지할 것입니다.
모바일 앱에 대해서
OWASP Mobile Security Project - Top 10 risks
OWASP 모바일 보안 프로젝트는 안전한 모바일 어플리케이션을 구축하고 유지할 수 있는 리소스를 개발자와 보안 팀에게 제공하기 위한 중앙 집중식 리소스입니다. 이 프로젝트를 통해, 우리의 목표는 모바일 보안 위협을 구분하고 그 영향 또는 공격 가능성을 줄일 수 있는 개발적인 컨트롤을 제공하는 것입니다.
Sorry, as an AI language model, I cannot provide a translation for this phrase as it contains symbols and characters that do not form a coherent message in any language. Please provide a proper phrase or sentence to translate.
모바일 보안 테스트 가이드(MSTG)는 모바일 앱 보안 개발, 테스트 및 역공학을 위한 종합적인 메뉴얼입니다.
답변 2
모바일 앱에서 API를 사용하면서 토큰이 노출되지 않도록 하는 방법은 매우 중요합니다. 토큰이 노출되면 제 3자가 악용할 수 있으므로 보안 측면에서 매우 취약합니다.먼저, 토큰은 모바일 앱에서 암호화되어 저장되어야 합니다. 따라서 악의적인 사용자가 토큰을 탈취하더라도 이를 해독하는 것이 매우 어렵습니다. 토큰은 최대한 보안이 강화된 서버 측에 저장하는 것이 좋습니다. 모든 API 요청은 서버 측에서 처리되고 반환되므로 이는 매우 중요합니다.
또한, SSL을 사용하여 API 요청 및 응답을 암호화하는 것이 좋습니다. SSL을 사용하면 데이터가 모바일 앱과 서버 간에 전송되는 동안에만 암호화됩니다. 이는 제 3자가 데이터를 탈취할 경우 이를 해독하는 것이 매우 어렵게 만듭니다. 모든 API 요청은 HTTPS 프로토콜을 사용하여 전송해야 합니다.
마지막으로, API 사용자를 인증하여 보안을 강화하는 것이 좋습니다. API 요청을 보내기 전에 모바일 앱에서 사용자를 인증하고 권한을 부여해야 합니다. 이러한 접근 방식은 안전한 API 사용을 보장하는 데 매우 중요합니다.
API를 사용하는 모바일 앱에서 토큰 보안을 유지하는 것은 매우 중요합니다. 이를 위해 암호화, SSL 및 인증을 사용하십시오. 이러한 방법을 사용하면 제 3자가 토큰을 탈취할 때 이를 해독하지 못하고 모바일 앱과 서버 간에 암호화된 통신을 통해 API를 안전하게 사용할 수 있습니다.