如果我被C#中创建的.NET程序轰炸 - 被轰炸,因为用户正在大量提交表单上的$ _POST字段...这是我的联系表单。
我不确定.NET程序中的质量$_POST
到底是多少,或者它甚至可能是一个c ++程序,我不知道。但是我有一个想法来反击这个。
我的第一个想法需要$_SESSION
但是......用户创建的那些$_POST
爆炸程序会处理/接受$_SESSION
吗?我真的不想知道,但也许有C#中WebClient类经验的人会知道它是处理$_SESSION'S
还是用户正在使用的任何东西。我正在考虑使用$_SESSION['submitted'] = $count;
和$count++;
if($_SESSION['submitted'] > 5) {
//display captcha or block from site
} else {
$count++;
}
如果用户的程序没有处理$ _SESSION,那么我可以将网站禁用吗?所以他们不能攻击我的联系表格?
答案 0 :(得分:2)
绕过会话锁定对于恶意用户来说是微不足道的。只需在每次POST后删除会话cookie,他们就会获得一个带有限制重置的全新清洁会话。
阻止此类用户的唯一安全方法是开始限制其IP地址。将其限制为每分钟一定数量的连接尝试,并且它们无法提交每分钟多次请求。现在,如果他们可以在主机之间跳转那么你就会遇到更大的问题,并且应该考虑将你的表单移到其他地方,这样他们得到的只是404(直到他们注意到它被移动了)。
缺点是,如果他们使用的是普通代理或像AOL这样代理一切的东西,那么你也会阻止其他合法用户。
答案 1 :(得分:0)
您可以设置一些安全障碍,例如登录表单或其他形式的身份验证(如浏览器检查等)
除此之外,我能想到的唯一想法就是阻止传入的IP,这可能也不是一个好主意
答案 2 :(得分:0)
如何实施CAPTCHA?
答案 3 :(得分:0)
如果我错了,有人可以纠正我,但是SESSION会使用会话ID(一个非常长的哈希字符串)存储cookie(或其他方式),SESSION变量存储在服务器上。因此,即使他们处理了SESSION,他们也无法控制服务器存储的SESSION变量。
如果我是你,我会将CAPTCHA设置为始终开启......