안녕하세요, 현재 iOS 상에서 API Gateway를 호출하는 식으로 서버와의 통신을 하는 앱을 개발중입니다.
그런데 보안적인 측면에서 공부를 시작한 지 얼마 되지 않아 궁금한 게 많아서 질문드립니다.
현재 저희의 앱에서 서버와 통신하는 프로세스가
1. 로그인을 하면 ID, PW를 암호화해서 Query String에 넣고, header 안에 앱 내에 저장한 API Gateway의 api-key를 넣어서 서버로 Request를 보냅니다.
2. 서버에서 api-key 인가 작업을 처리하고, valid하면 서버 측에서 토큰을 생성하여 Response로 넘겨줍니다.
3. 그 뒤의 서버 작업에서 Request를 보낼 때에는 header 안에 api-key와 로그인 할 때 받았던 토큰을 같이 넣어서 보내고, 서버에서는 api-key가 valid한지 확인하고 토큰 확인 작업을 한 뒤, 정상적인 세션이라고 판단되면 정상적인 시나리오의 서버 작업을 진행합니다.
현재 이와 같은 식으로 진행이 되는데 걱정이 되는 게 역공학 등의 방법으로 앱 파일을 뜯어봐서 api-key를 뚫린다면 위의 프로세스를 앱 말고 curl이나 Postman으로도 똑같이 할 수 있을 것 같은데 이걸 막고 싶습니다. 혹시 request가 저희가 배포한 앱에서 온 건지 아닌지를 확인 할 수 있는 방법이 있거나 아니면 API Gateway 외에 다른 프레임 워크를 이용해서 이를 해결할 수 있는 방법이 있는지가 궁금합니다!