加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP:防洪/垃圾邮件系统

发布时间:2020-12-13 16:34:08 所属栏目:PHP教程 来源:网络整理
导读:我实际上正在开发一个将使用用户系统(登录,注册,发送丢失的密码到电子邮件)的 PHP项目,我认为这可能非常容易受到暴力攻击和/或垃圾邮件(发送密码到某人的电子邮件像1000次等等使用你的幻想) . 今天的网络服务器(Apache,IIS)是否有一些内置的防暴抗力? 实施
我实际上正在开发一个将使用用户系统(登录,注册,发送丢失的密码到电子邮件)的 PHP项目,我认为这可能非常容易受到暴力攻击和/或垃圾邮件(发送密码到某人的电子邮件像1000次等等使用你的幻想)
.

>今天的网络服务器(Apache,IIS)是否有一些内置的防暴抗力?
>实施反垃圾邮件/洪水系统的最佳方式是什么?如果我想要一个页面不能每分钟调用两次以上,那么另外一个页面可能会被调用一次100次,所以.

>我绝对必须存储IP地址,他们上次访问页面的时间和访问次数 – 但是将其存储在文本文件/数据库(MySQL)中是有效的,
>我应该使用验证码来注册/恢复丢失的密码?
“文字”验证码是否可行? (“什么是5加9减2”)
>该页面不会被许多用户使用(100-200),我实际上是要实现所有这些吗?

关于CAPTCHA:我建议不要使用CAPTCHAs,除非你真的需要它.为什么?

>这很丑陋
这对你的用户来说很烦人.你不应该让他们跳过箍来使用你的网站.

有一些替代方案非常简单,可以非常有效,对(几乎所有)用户都是完全透明的.

>蜜罐字段:使用通用名称(如“网站”)为表单添加一个字段.除此之外,添加一个标签,说明“不要写在这个框中”的内容.使用Javascript隐藏输入和标签.收到表单提交时,如果该字段中有任何内容,请拒绝输入.

拥有JS的用户将看不到它,并且会很好.没有JS的用户只需遵循简单的说明. Spambots会为它而下降并显露自己.
自动人机识别系统:与上述类似.添加一个标签为“Write ‘Alex'”的输入字段(例如).使用Javascript(并且知道大多数自动化的垃圾邮件机器人将不会运行JS),隐藏该字段并使用“Alex”填充.如果提交的表单没有魔术字,则忽略它.

拥有JS的用户将看不到它,并且会很好.没有JS的用户只需遵循简单的说明. Spambots不知道该怎么做,你可以忽略他们的意见.

这将保护您免受垃圾邮件机器人自动化的99.9%.它不会做什么,即使在最轻微的,是保护你反对有针对性的攻击.有人可以自定义他们的机器人,以避免蜜罐或总是填写正确的值.

关于暴力阻止:服务器端解决方案是唯一可行的方法.对于我目前的一个项目,我实施了一个非常类似于你所描述的强力保护系统.这是基于这个Brute Force Protection plugin的CakePHP.

该算法相当简单,但最初有点混乱.

>用户请求一些动作(例如,重置密码)
>运行:DELETE * FROM brute_force WHERE expires<现在()
>运行:

SELECT COUNT(*) FROM brute_force 
WHERE action = 'passwordReset'
AND ip = <their ip address>

>如果计数大于X,则告诉他们等待一段时间.
>否则,运行:

INSERT INTO brute_force (ip,action,expires)
VALUES (<their ip address>,'passwordReset',NOW() + Y minutes)

>继续重设密码功能.

这将允许用户仅在Y分钟内尝试重新设置密码X次.按照您的看法调整这些值. 5分钟内可能有3次复位?此外,您可以为每个操作设置不同的值:对于某些事物(例如:生成PDF),您可能希望在10分钟内将其限制为10.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读