2011-04-22 5 views
1

stringByEvaluatingJavaScriptFromString을 사용하여 (Greasemonkey와 같은) 액세스 권한이없는 HTML을 수정하는 응용 프로그램이 있습니다. 특히 onSubmit 이벤트가 JS에서 시작된 경우 NSUserDefaults에 로그인 양식의 사용자 이름과 비밀번호를 저장하려고합니다.Javascript에서 iPhone에 맞춤 URL 스키마로드 중

이미 사용자 지정 URL 체계와 onSubmit 처리기가 있습니다. URL에 사용자 이름과 암호를 전달하면 저장할 수 있습니다. onSubmit 처리기에만 문제가 있습니다. 양식을 제출하기 전에 맞춤 URL로 데이터를 저장하려면 어떻게해야합니까?

나는 이 아니며은 자바 스크립트 프레임 워크를 사용하며 내 코드는 모바일 사파리 만 타겟팅합니다.

+0

원하는 대답이 아니기 때문에 (이 글은 주석입니다.) 실제로 비밀번호를 키 체인에 저장해야합니다 ** ** NSUserDefaults가 아닙니다. 그렇지 않으면 당신은 단지 Skype가 그들의 안드로이드 애플 리케이션에 막 들어간 종류의 문제를 요구하고 있습니다. 사용자 암호를 저장하는 경우 암호를 암호화해야합니다. – lxt

+0

@lxt 'NSUserDefaults'의 키 체인 또는 보안 관련 사항을 알지 못했기 때문에이를 지적 해 주셔서 감사합니다. 내가 안전하게 할 수 없다면 암호를 저장하지 않을 수도 있습니다. – Wylie

답변

1

귀하의 질문에 직접 답변하지 못해 사과드립니다. 더 쉬운 옵션을 고려해보십시오. UIWebView에 자바 스크립트를 삽입하지 않고 양식 제출을 스니핑 할 수 있어야합니다. 나는 당신의 상상력에 parseUsernameFromRequest:, parsePasswordFromRequest:saveUsername:andPassword:의 구현을 떠 났어요

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
    if ([[[request URL] absoluteString] hasPrefix:@"https://www.thirdpartysite.com/theirLoginScript"]) { 
     NSString *username = [self parseUsernameFromRequest:request]; 
     NSString *password = [self parsePasswordFromRequest:request]; 
     [self saveUsername:username andPassword:password]; 
    } 
    return YES; 
} 

: 그냥 UIWebViewDelegate이 같은 뭔가를 구현합니다.

(힌트 :.. 양식이 GET 방식을 사용하는 경우, 다음 매개 변수가 [[request URL] parameterString]를 사용하여 얻을 수있는 양식이 POST 방식을 사용하는 경우, 당신은 [[NSString alloc] initWithData:[request HTTPBody] encoding:NSUTF8StringEncoding]을 사용할 수 있습니다)

을 그건 그렇고, 당신은 안 NSUserDefaults에 비밀번호와 같은 민감한 정보를 저장하십시오. Apple은 이러한 유형의 정보를 안전하게 저장하기위한 키 체인 서비스를 제공합니다. 유감스럽게도 키 체인 서비스를 사용하는 것은 놀랍도록 복잡하므로 Buzz Andersen의 Simple iPhone Keychain Code을 확인하시기 바랍니다.

+0

키 체인 래퍼 및 샘플 코드에 유용한 링크를 제공해 주셔서 감사합니다. https 연결에서 스니핑 양식이 여전히 작동합니까? – Wylie

+0

해야합니다. 전송 레벨에서 실제로 "스니핑"하지 않습니다. 앱에서 자체 웹보기를 모니터링하고 있습니다. – cduhn