C#PHP连接防洪

时间:2013-01-30 03:48:01

标签: c# php mysql

所以我想说我在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

我的问题是:有没有办法防止洪水?我知道任何人都可以通过持续发送反馈或甚至创建第三方应用程序来发送垃圾邮件/洪水,每秒发送1000个帖子请求。我正在考虑在PHP方面实施某种检查,例如:如果来自c#app的连接密码匹配,那么如果没有则继续,退出。

基本上,我不希望人们利用反馈方法并向我发送垃圾邮件。

有人可以推荐一种方法吗?或者我甚至不担心这个? 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

一种典型的技术是每X单位时间限制提交某种类型的提交,其中表中的last_submitted_at列与某种标识符相关联。例如,如果您拥有相当强大的用户注册系统,则可以将其与用户关联,或者如果您没有,则可以将其与IP关联。

如果您尝试投票,发布或经常出现问题,这是Stack Overflow使用的系统。其中每个都有一个单独的计时器,可能会转换为数据库中某个单独的last_X_at列。

如果最后一次小于某个阈值,则显示错误而不是接受提交。