0

では、C# でフィードバック フォームを作成したとします。フィードバックが PHP ページに送られ、PHP ページがそれを MySQL データベースに追加します。コード:

private void PostFeed(string Params)
{
    using (WebClient wc = new WebClient())
    {
        wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
        wc.Headers["Accept"] = @"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
        wc.Headers["Accept-Language"] = @"en-US,en;q=0.5";
        string HtmlResult = wc.UploadString("http://website/feedtest.php", "POST", Params);
        Console.WriteLine(HtmlResult);
    }
}

私のPHPには、次のようなコードがあります。

$name = $_REQUEST['name'];
$email = $_REQUEST['email'];
$desc = $_REQUEST['description'];
connect
post result...
close connection

私が持っている質問は: 洪水から保護する方法はありますか? フィードバックを継続的に送信したり、1 秒あたり 1000 件の投稿リクエストを送信するサード パーティのアプリを作成したりすることで、誰もがスパムやフラッディングを実行できることを理解しています。たとえば、PHP 側で何らかのチェックを実装することを考えていました。たとえば、C# アプリからの接続パスワードが一致する場合は続行し、一致しない場合は終了します。

基本的に、私は人々がフィードバック方法を利用して私にスパムを送ってほしくありません.

誰でも方法を提案できますか? または、これについても心配する必要はありませんか? どんな助けでも大歓迎です。

4

1 に答える 1

0

典型的な手法は、last_submitted_atある種の識別子に関連付けられたテーブルに列がある X 単位の時間制限ごとに、ある種の送信を行うことです。たとえば、かなり堅牢なユーザー登録システムがある場合はユーザーに関連付けることができ、そうでない場合は IP に関連付けることができます。

これは、投票、投稿、または質問を頻繁に行う場合に Stack Overflow が使用するシステムです。これらにはそれぞれ別のタイマーがあり、おそらくlast_X_atデータベースの別の列に変換されます。

前回の時間がしきい値よりも少ない場合は、送信を受け入れる代わりにエラーを表示します。

于 2013-01-30T03:56:12.270 に答える