2012-03-28 4 views
3

내 웹 사이트의 특정 부분에 대한 인증 정보를 내 앱에 코딩해야합니다. 앱이 "디 컴파일"되고 사용자 이름과 비밀번호가 공개 될 수 있습니까?앱을 디 컴파일 할 수 있습니까?

NSURL *url = [NSURL URLWithString:@"https://predefinedUsername:[email protected]"]; 
+3

아마 여기를 읽어야합니다. http://stackoverflow.com/questions/3919765/how-safe-is-information-contained-within-iphone-app-compiled-code –

+6

일반 텍스트로 저장하는 경우 앱에서 디 컴파일하지 않고도 표시 될 수 있습니다. – Hyperbole

답변

6

예, 가능합니다. 앱에 컴파일 된 것이 있다면 누군가 다른 사람이 발견 할 수 있다고 가정합니다. 오늘날 불가능할지라도, 알려 지거나 알려지지 않은 공격에 취약한 정보의 동결 된 기록을 작성하고 있습니다.

사용자가 인증해야하는 작업을 수행해야합니다. 이를 수행하는 데는 수 백만 가지 방법이 있으며, 모든 방법에 대해 잘못을 수행하는 백만 가지 방법과 두 가지 방법이 있습니다. :)

특정 요구 사항에 대해 더 많이 알지 못하면 실제로 "단순하게 유지하고 아무 것도 저장하거나 일반 텍스트로 보내지"말고는 말할 수 없습니다.

+0

도움을 주셔서 감사합니다. 더 많은 인기 앱, 특히 잡지가 어떻게 사용하는지 알고 계십니까? 콘텐츠는 보안 웹 사이트에서 다운로드되며 사용자 이름과 비밀번호가 매번 동일하지는 않습니까? 사람들이 왜 앱을 디 컴파일하고 무료로 이슈를 다운로드 할 수 없습니까? 아니면 나는 이것을 잘못된 길로보고 있는가? 감사. –

+1

@JackHumphries 사용 가능한 옵션은 플랫폼에 따라 다릅니다. 앱의 모든 인스턴스에서 하드 코딩 된 하나의 계정을 공유하는 대신 구입 당 토큰을 보유하고 유료 구매 당 백엔드에서 새 계정을 만들면 (남용/공유/환불로 인해 해지 될 수 있음) 시작 되라. 나는 애플의 앱 스토어 인프라에 관해서 안드로이드 마켓에 대해서만 조금은 알고 있지만, 당신에게 더 이상의 힌트를 줄 수는 없다. –

2

예를 들어 URL 요청의 일반 텍스트를 통해 보내면 디 컴파일 할 필요없이 사용자 이름과 암호가 노출됩니다. 스니퍼 나 MITM 서비스를 가진 사람이라면 누구나 그것을 공중에서 빼앗아 갈 수 있습니다. 더 나은 방법은 http * * 프로토콜을 통해 SSL을 사용하는 것입니다. 한 단계 더 나아가서 자격 증명에 대한 런타임시 프롬프트를 표시하거나 앱 내에 암호화 된 버전을 저장할 수 있습니다.

+0

감사합니다. 모든 정보는 SSL을 통해 전송됩니다. 앱 내에 암호화 된 버전의 자격 증명을 저장한다고 말했을 때의 의미를 더 자세히 설명해 주시겠습니까? 서버로 보내야 할 때 어떻게 해독하겠습니까? 고마워. –

5

마찬가지로 @Hyperbole은 사용자 이름과 암호를 일반 텍스트로 저장하면 실행 파일에 표시됩니다. 문자열에 대한 실행 파일을 검사하는 것은 매우 간단합니다. 일반적으로 악의적 의도를 가진 사람이 먼저 시도합니다.

iTunes에서 다운로드 한 응용 프로그램을 마우스 오른쪽 버튼으로 클릭하고 Finder에서 쇼를 선택하십시오. 바탕 화면에 응용 프로그램의 복사본을 만들고 AppName.ipa에서 AppName.zip으로 응용 프로그램의 이름을 바꿉니다. 압축을 풀려면 폴더를 두 번 클릭하고 폴더를 살펴보십시오. Payload 폴더로 이동 한 다음 응용 프로그램처럼 보이는 AppName이라는 파일 (아마도 유일한 파일)을 마우스 오른쪽 단추로 클릭하고 십자 기호가있는 큰 원이 아이콘에 표시됩니다. 패키지 내용보기를 선택하십시오. 확장명이없는 AppName이라는 파일과 녹색 단어 "exec"가있는 검은 색 사각형이 나타날 때까지 스크롤합니다. 텍스트 편집 또는 다른 텍스트 편집기에서 해당 파일을 엽니 다. 이것의 대부분은 무작위적인 기호와 다른 쓰레기가된다는 것을 알게 될 것입니다. 그러나 때때로 평범한 텍스트를보아야합니다. 컴파일러는 문자열 상수를 가져 와서 대부분의 경우 컴파일 할 때 응용 프로그램에 직접 포함합니다.

당신은 콘텐츠에 액세스하기 위해 어떤 잡지 응용 프로그램과 다른 사람들이하는지 묻습니다 - 서버에서 인앱 구매 영수증을 확인한 후에는 여러 가지 방법으로 수행 할 수 있지만 머리 꼭대기에서 벗어나 서버에서 기록합니다 iTunes의 특정 계정으로 잡지의 특정 문제를 구입했음을 알리는 식별자입니다. 그런 다음 앱에서 서버의 파일을 요청하여 프로세스의 요청에 식별자를 추가 할 수 있습니다. 서버는 데이터베이스를 검색하고 사용자가 콘텐츠를 구매했는지 여부를 결정한 후 파일로 응답합니다.

다른 솔루션에는 고유 키 서명/해싱이 포함됩니다.

2

디 컴파일하지 않고도 응용 프로그램 바이너리에 대해 '문자열'을 실행하면 이러한 자격 증명을 쉽게 복구 할 수 있기 때문에 매우 나쁩니다.

처음으로 앱을 시작할 때 자격 증명을 입력하라는 대화 상자가 표시되지 않습니까? 또는 파일에 암호화하여 저장 한 다음 사용자에게 대체 자격 증명을 요청할 수 있습니다. 키를 파생시키는 패스 코드이지만 패스 코드가 길지 않은 한 결정된 공격에도 견딜 수 없습니다.

관련 문제