1

PHP Webサービスを使用するAndroidアプリケーションを構築しています(これも構築しています)。

私の質問は、許可されていないユーザーが Web サービスを使用するのを防ぐにはどうすればよいですか? たとえば、誰かが私の Web サービスのアドレスを取得し、それをアプリの外部で使用することはできますか (たとえば、post 変数をサービスに送信するなど)?

関連するもう 1 つの質問は、自分の Web サービスでスパム リクエストを防ぐにはどうすればよいですか? IPアドレスを記録して通話量を制限するケースでしょうか?

4

2 に答える 2

0

HTTPSAndroid デバイスと Web サービス API エンドポイント間の接続を使用できます。

接続のみを受け入れるように Web サービスを制限しますHTTPS。これは、Apache を使用して (おそらくSSLRequireSSL ディレクティブを使用して)、または PHP 接続ハンドラーで直接行うことができます。

トランスポート ストリームを使用している間HTTPS、Web サービスへの API 呼び出しを行うときに特定の引数を渡して、アプリケーションから要求が送信されたことを確認できます。送信された特定のデータを知ることはできず、リモート サービスへの許容可能な接続を再現することはできません。

2 番目の質問については、特定の時間のリクエスト数を実際に制限できます。PHP で、またはfail2banなどの特定のツールを使用して。

于 2013-03-29T13:39:00.960 に答える
0

PHP は、サイトやインターネット ブラウザから POST または GET 経由でデータを受け取ることができます。これを行うために使用される方法の 1 つはcurlによるものです。

この質問について言及しているのは、クロスサイト リクエスト フォージェリと呼ばれるものです。

可能であれば、アプリでHTTPSの使用を実装する必要があります。これにより、多くのセキュリティ問題が解決される可能性があります。

HTTPS を使用できない場合(高価であるか、その他の問題があるかどうか):

PHP で POST または GET によって受信した情報を確認する必要があります。この言語には、これらの「問題」を解決する多くの機能があります。PHP公式ドキュメントのこの部分を見てください。

ログイン システムを構築しているとします。また、ログイン ページに追加して、一度だけ発生する秘密の一意のコードを含む非表示の要素を配置し、この秘密のコードをセッションに保存して、ログ スクリプトがセッションでこのコードを検索することもできます。スクリプトに投稿されたものと比較して、続行する必要があります。

また、訪問者の IP アドレスを取得する場合は、次のようにします。

function getRealIpAddr()
{
    if (!empty($_SERVER['HTTP_CLIENT_IP']))   //check ip from share internet
    {
      $ip=$_SERVER['HTTP_CLIENT_IP'];
    }
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))   //to check ip is pass from proxy
    {
      $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
      $ip=$_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

最後に、これを読んでください。

編集

HTTPS 証明書を支払うことができない場合 ( Halim Qarroumが言うように)、次を使用できます。

無料の自己署名 SSL 証明書。もちろん、これには長所と短所があります

于 2013-03-29T13:41:14.683 に答える