2010-12-13 3 views
3

PHP 기반 웹 사이트에 연결해야하는 iPhone 앱을 만들고 있습니다. iPhone 앱은 레코드를 검색하고 추가합니다. 웹 사이트와 iPhone 앱 간의 통신이 API 키로 제어되어야한다고 생각합니다. iPhone 앱에서 제공하며 웹 사이트에서이를 확인합니다.iPhone 앱에 API 키를 저장하는 것이 안전하지 않습니까?

iPhone 응용 프로그램 자체에 해당 API 키를 저장해야 할 것이라고 추측합니다. 그래서 내 질문. iPhone 응용 프로그램에서 API 키를 위험에 저장하고 있습니까? 누군가 내 API 키에 액세스하여 iPhone 앱을 가장해서 웹 사이트에 액세스 할 수 없습니까? 아니면 이렇게하기가 어렵습니까? 내가 잘못 생각한 경우, 더 좋은 방법이 있는지 말해주십시오.

+2

어떤 종류의 API와 키가 있습니까? 그것이 OAuth'application_key'와'application_secret'이라면 ** 당신은 ** 그들을 ** 전화에 저장해야하기 때문에 이것과 아무 상관이 없습니다. 그리고 네, 그것들을 추출하고 API가 당신이 수동으로 할 수있는 모든 일을 할 수 있습니다. – zerkms

답변

10

정말로 비밀로 유지해야하는지 여부와 관계없이 어쨌든 캐주얼 해커로부터 자신을 보호하기 위해 암호화하고 난독 화해야합니다.

반면에, 나는 당신이 결정적인 해커를 멈출 수 있다고 생각하지 않습니다. 탈옥, gdb 및 트래픽 스니퍼의 조합은 사용자가 생각할 수있는 거의 모든 보호 기능을 무력화시킵니다. 그러한 보호에 집중적으로 투자하는 것은 거의 의미가 없기 때문에 많은 시간과 노력을 낭비하고 API 키를 해킹 할 수있는 절충안을 찾아야합니다.

개인적으로 App Store에서 가져온 이진 파일이 암호화되어 있기 때문에 개인적으로 API 바이너리가 애플리케이션 바이너리 내에서 난독 화 된 형태로되어 있다는 생각이 듭니다. PT_DENY_ATTACH가있는 약간의 ptrace() 해커는 gdb를 통해 앱에 접근하는 것을 더 복잡하게 만들 수 있지만 완전히 방해하지는 않습니다. 가능성이 있습니다, 이것은 귀하의 응용 프로그램이 해독 형태로 급류로 인터넷에 떠 다니는 것을 피하기에 충분할 것입니다. 그런 다음 트래픽을 스니핑하기가 쉽지 않고 jailbreaking을 필요로하지 않기 때문에 HTTPS를 사용해야합니다.

한 가지 더 중요한 고려 사항. HTTPS가 궁금하다면 HTTP 요청에서 API 키를 보내야합니다. 위의 모든 것을 잊어 버리십시오. 네트워크를 통해 일반 텍스트로 전송되는 경우 애플리케이션 번들의 키를 보호하는 것은 의미가 없습니다.

-1

키 저장소 서비스를 사용하여 Mac 저장 암호와 같은 키를 저장할 수 있습니다. 100 % 확신 할 수는 없지만 패스워드를 암호화하고 다른 손으로도 안전한 샌드 박스에 보관할 수 있습니다 (물론 jailbroken에서는 샌드 박스가 의미가 없습니다.

http://developer.apple.com/library/ios/#documentation/Security/Conceptual/keychainServConcepts/iPhoneTasks/iPhoneTasks.html

그러나 확실히 그렇지 않으면 사람이 많은 노력없이 도청 할 수 HTTPS를 사용 Costique 같은 올바른 도구와 아이폰에 보는 가치가

어느 쪽이든) 언급했다.

+1

이것은 사용자의 암호를 저장하기위한 것입니다. 개발자의 키는 앱에 포함되어야합니다. – user102008

관련 문제