0

.phpデスクトップアプリを自分のWebサイトのページにヒットさせたい。この.phpページはサーバー側のタスクを実行し、成功/失敗などを示すHTTP応答を返します。

.phpデスクトップアプリのみがページにアクセスできるようにするにはどうすればよいですか?ボット、クローラー、ハッカーがページにアクセスするのを防ぐにはどうすればよいですか?

URLにランダムなフレーズを含める必要がありますか?例えば:

http://www.website.com/s3g8k0d1q6/myphpfile.php
4

3 に答える 3

0

Web サービスにアクセスするほとんどのデスクトップ アプリケーションには、アプリケーション キーが必要です。そのアプリケーション キーは、Web サービスへの要求を行うために使用されます。各アプリケーションは、ユーザーが登録するときにランダムに生成された独自のキーを取得します。または、デスクトップ アプリケーションがこのプロセスをバックグラウンドでサイレントに実行できます。

アプリケーション キーが提供されるようにユーザー/デスクトップ アプリケーションを認証する方法は、ユーザー次第です。これは、電子メールとパスワードのペア、デスクトップ アプリケーションだけが知っている秘密鍵、またはデスクトップ アプリケーションをアクティブ化するために各ユーザーに電子メールで送信される鍵の可能性があります。

キーはデータベースに保存され、テーブルに列を追加して、キーが取り消されたかどうかを示すことができます。

SSL を使用して、アプリケーション キーを秘密にしておくことができます。

キーがサービスにどのように渡されるかは重要ではありません。$_GET、$_POST、または Http ヘッダーの一部である可能性があります。PHP は、これらすべてのメソッドから詳細を抽出する機能をサポートしています。

たとえば $_POST['key'] でリクエストを受け取ったら、データベースをチェックして、そのキーが存在し、取り消されていないかどうかを確認します。見つかった場合は、リクエストを実行するか、他のレスポンスを提供します。

通知については、PHP ユーザーは SQL インジェクション攻撃から保護してください。ここに簡単なサンプル コードがありますが、テストされていません。

<?php
if(!empty($_POST['key']))
{
   $con = mysql_connect('localhost','mathew','1234') or die("can't open db");
   mysql_select_db('my_db',$con);
   $key = mysql_real_escape_string($_POST['key']);
   $result = mysql_query("SELECT * FROM Keys WHERE Revoked = 0 AND Key = '$key'");
   if(!empty(mysql_fetch_array($result)))
   {
       // perform web service here
   }
}

これは最も単純な方法であり、SSL を使用して実行すると基本的なセキュリティが提供されます。SSL を使用していない場合、誰かがキーを盗み見する可能性がありますが、それは、アプリケーションが時間をかけてハッキングする価値があるかどうかによって異なります。

于 2012-10-20T15:29:34.173 に答える
-1

robots.txt ファイルを使用できます。

User-agent: *
Disallow: myfile.php

確かに、悪意のあるボットや他の方法で robots.txt ファイルを無視するボットを防ぐことはできませんが、検索エンジン クローラーなどの正当なボットは思いとどまる可能性があります。

于 2012-10-20T14:58:45.670 に答える