2012-01-25 2 views
0

私は、サーバーにPHPリクエストを行うアプリケーション(iosとアンドロイド)を開発しました。セキュリティ上の理由から、私はユーザーがブラウザの同じURLに型を入れられないようにする必要があります。アプリだけがこのリクエストを行うことを許可されるべきです。私は、javascriptブラウザの検出を考えていて、アプリから呼び出されたときに「不明」と答えたiosのために良い結果を得ています。しかし、アンドロイドの場合、ブラウザ内やアプリから呼び出されると、常に「Android」と答えます。 誰かがこれをサーバー側でどのように検出するかについて考えがありますか?アンドロイドアプリから呼び出されたURLを検出しました

+0

HTTPヘッダーにカスタムタグを追加してみてください。 –

+0

必要なセキュリティのレベルに依存しますが、識別子としてuser-agentを使用することはまったく安全ではありません。あなたは "hmac"について何かを検索し、リクエストに署名する方法に興味があるかもしれません –

+0

うん、あなたのアプリは暗号的にリクエストに署名するようにしてください。または、より良いことには、描画ボードに戻り、もはや誰かがそのURLをブラウズすることがセキュリティ上の懸念事項にならないようにします。 –

答えて

1

ユーザーエージェント文字列を検出できました。これは、使用してPHPでサーバ側で行うことができます。

$_SERVER['HTTP_USER_AGENT'] 

AndroidとiOSのにWebViewのを教えて、あなたのアプリケーションではなど「モバイルサファリ」、「WebKitの」のようなものを含むユーザーエージェント文字列を返しますあなたが作った独自のものとしてユーザーエージェントを設定してください。次のコードでiOSの上でこれを行うことができます - 私はAndroidが似た何かを持っている期待:

[request setValue:@"MyMadeUpUserAgentString" forHTTPHeaderField:@"User_Agent"]; 

次にPHPでHTTP_USER_AGENTは、あなたのアプリに設定した値と一致した場合にのみ、ページを表示します。

もちろん、大量のセキュリティはありません。ブラウザやブラウザのプラグインによっては、あなたのユーザエージェントを偽装することができます。しかし、大部分のユーザーがブラウザでそのコンテンツを見るのを止めるでしょう。

+0

これはほとんどのシナリオでは機能します – SeanPONeil

+1

安全ではありません。それは、4フィートのピケッフェフェンスのような不便な障壁です。これで十分ですが、これは簡単な解決策です。 –