1

stringByEvaluatingJavaScriptFromStringアクセスできないHTMLを変更するために使用するアプリケーションがあります(Greasemonkeyなど)。具体的には、JSからイベントが発生しNSUserDefaultsたときに、ログインフォームのユーザー名とパスワードを保存したいと思います。onSubmit

私はすでにカスタムURLスキームとonSubmitハンドラーを持っています。URLにユーザー名とパスワードを渡すことができ、それが保存されます。ハンドラーに問題があるだけonSubmitです。フォームを送信する前に、カスタムURLを使用してデータを保存するにはどうすればよいですか。

私はJavascriptフレームワークを使用しておらず、私のコードはMobileSafariのみを対象としています。

4

1 に答える 1

1

質問に直接回答しなかったことをお詫びしますが、もっと簡単なオプションを検討することをお勧めします。にjavascriptを挿入せずに、フォーム送信をスニッフィングできるはずですUIWebViewUIWebViewDelegateあなたの:にこのようなものを実装するだけです

- (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;
}

parseUsernameFromRequest:、、parsePasswordFromRequest:の実装はsaveUsername:andPassword:あなたの想像力に任せました。

(ヒント:フォームがGETメソッドを使用して[[request URL] parameterString]いる場合は、を使用してパラメーターを取得できます。フォームがPOSTメソッドを使用している場合は、を使用できます[[NSString alloc] initWithData:[request HTTPBody] encoding:NSUTF8StringEncoding]。)

ちなみに、パスワードなどの機密情報をNSUserDefaultsに保存しないでください。Appleは、この種の情報を安全に保管するためのキーチェーンサービスを提供しています。残念ながら、キーチェーンサービスの操作は驚くほど複雑なので、BuzzAndersenのシンプルなiPhoneキーチェーンコードを確認することをお勧めします。

于 2011-04-22T18:21:08.867 に答える