如何防止使用php自动多次点击网站?
Posted
技术标签:
【中文标题】如何防止使用php自动多次点击网站?【英文标题】:How to prevent automated multiple hits to website with php? 【发布时间】:2013-12-07 08:28:58 【问题描述】:我在用户填写消息的页面上有一个表单,当单击“发送”按钮时,它通过 ajax 发送到 php 脚本。那里通过 mail() 消息被发送到特定的电子邮件地址。
我想避免恶意用户在短时间内发送 1000 封电子邮件的情况。如果我错了,请告诉我,但这将是一种 DOS 攻击,这可能会由网络服务器本身处理。我在共享主机上,我会假设大型主机提供商会限制这种行为,因此在我的 php 脚本出现之前,对我的页面的多次自动点击会以某种方式被阻止。
如果不是这种情况,最好的预防方法是什么?我仍然不能 100% 确定我的主机会做这部分工作,并且想知道我可以从 PHP 本身做些什么来帮助?
编辑:我正在考虑将时间戳存储在 Session 变量中,但是如果有人关闭了 cookie,那么会话将不存在。是否可以检查浏览器中的cookies是否打开,如果不是简单地忽略请求?如果 cookie 打开,则将时间戳存储在会话中,并与每个请求进行比较,例如5 秒后才发送电子邮件?
【问题讨论】:
不,不能使用验证码 可能检查一下每次提交的邮箱地址? 电子邮件来自我的数据库 我猜在php端你可以保存IP地址。然后,每当调用该页面时,请检查它是否出现过您可以从客户端和服务器双方防止这种情况
在客户端,首先创建一个标志来检查表单是否通过 Ajax 调用提交
var flag = false; // name for flag var according to your requirement
//check if for is sent or not
if(!flag)
$.ajax(
//set properties
.....
success: function (response)
// set flag as true
flag = true;
);
它将阻止单个用户多次提交,除非用户刷新页面
现在假设用户尝试刷新页面并多次提交表单
然后在服务器端为用户电子邮件在数据库中创建一个标志变量
e.g subscription table
user_email true , false default false //for each email id which sent via that form
如果在此表中未找到用户电子邮件 ID,则使其为真
使用此过程可以防止出现问题。
希望对你有帮助
【讨论】:
以上是关于如何防止使用php自动多次点击网站?的主要内容,如果未能解决你的问题,请参考以下文章