防止登录请求泛滥的简单方法?

2024-02-26

如果我的网站使用 POST 表单进行登录,有什么快速、简单的方法可以防止恶意客户端向我的 Web 服务器发送大量 POST 请求,试图暴力破解我的用户帐户?

PHP/MySQL/Apache。


防止暴力破解比乍看起来要棘手。解决方案是组合控制——单一控制并不能满足要求。请记住目标:您希望减缓暴力攻击的速度,使其要么无效,要么您可以检测到它并采取行动。第二种选择通常比第一种更有效。

您可以使用验证码(这是目前流行的技术),但验证码通常可以自动读取,当计算机无法读取验证码时,可以通过支付低工资工人或使用验证码来获得人口农场保护“免费”色情内容(两种技术都已使用)。

其他人关于在表单中使用秘密值的建议并没有真正的帮助;攻击者只需解析 HTML 即可找到秘密值,并将其包含在他们的帖子中。这很容易自动化,所以这并不是一个很好的防御。哦,如果结果证明该值很容易预测(使用糟糕或损坏的 PRNG 或坏种子),那么您又陷入了困境。

跟踪 IP 地址是可以的,但前提是您不支持 NAT。使用 NAT,有效用户将看起来是重复的。请记住,攻击者可以冒充其他系统;单个攻击系统可以使用其他 IP 地址,甚至拦截到该系统的流量(ARP 中毒是一种很好的机制)。

您可以在给定时间段内使用最大失败超时次数​​(例如 1 小时内 3 次)。这会减慢攻击者的速度,但不一定能阻止他们。您可能会包含自动解锁,但您需要做一些数学计算,并确保解锁时间确实有用。

指数退避是另一种有用的机制。这可能会将会话(攻击者不必返回到服务器)绑定到 IP 地址(与 NAT 中断)或帐户(不考虑跨多个帐户的暴力破解) 。

为了使其他防御措施发挥作用,您必须拥有强密码。如果您的密码很容易被猜到(它们在字典中吗?它们很短吗?它们很复杂吗?),攻击就会成功。实现最低密码强度要求和“非法密码”字典(与该字典的常见字符替换相结合)是一个好主意。或者,您可以使用 OATH、证书登录或硬件令牌(如 RSA 的 SecurID)等系统。

我认为是伯特·卡利斯基讨论了客户的难题。基本上,你给客户端一个对服务器来说很容易但对客户端来说很困难的挑战;客户端通过浪费自己的资源试图解决这个难题来自我解决。这里的困难在于确定谜题的正确复杂性。例如,它可能需要对一个大数进行因式分解。无论它是什么,您都必须假设最有效的算法,并且您必须能够处理不同机器上不同浏览器的不同性能(可能很慢),同时减慢浏览器外部的自动攻击(可能比你的 JavaScript)。我是否提到过您必须用 JavaScript 实现解决方案?

但您仍然受到跨多个帐户的攻击的困扰。我不知道有任何公开使用的控件可以很好地解决此问题,除非您可以跟踪 IP 地址。

然后,您需要保护用户名。不知道用户名的攻击者(需要一个不指示用户名何时有效的系统)将必须学习用户名和密码,而不是轻松确认用户名,然后只攻击密码。

并且您需要小心错误消息和服务器计时也不会泄露有效密码。

当您处理错误消息时,请确保密码恢复机制不会泄露任何信息。即使在其他方面良好的系统中,密码恢复也会毁掉整个事情。

但是,尽管如此,攻击最终取决于服务器的性能。您可能只是实现一个非常慢的身份验证机制(对于有效和无效的身份验证都必须很慢)。在线攻击的速度保证不会超过服务器处理请求的速度。

然后,您需要检测暴力攻击,因此您的系统需要良好的审计跟踪。但您需要小心,不要记录太多日志消息,否则您将通过填满磁盘空间来开辟一种简单的方法来管理服务器。像 syslog 的“上一条消息已被接收 1000 次”这样的消息就很好了。

一旦你完成了所有的设计,并再次完成了实现,你将需要检查整个系统以及系统的所有功能,在给定当前设置和服务器性能的情况下对其进行数学建模,并确定攻击者暴力破解 (a) 单个帐户和 (b) 任何帐户(跨帐户暴力破解以避免特定于帐户的控制)所需的平均时间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

防止登录请求泛滥的简单方法? 的相关文章

  • Java selenium - 如何在 TimeoutException 之后正确刷新网页?

    ChromeOptions options new ChromeOptions options addExtensions new File extension 6 2 5 0 crx ZenMate options addExtensio
  • 使用 php ping 网站

    我想创建一个 php 脚本 它将 ping 一个域并列出响应时间以及请求的总大小 这将用于监控网站网络 我尝试过curl 这是我到目前为止的代码 function curlTest2 url clearstatcache return if
  • MVC4更新部分视图

    我正在开发一个简单的 MVC 应用程序 我有主视图 部分视图和控制器 这是我的主要视图 model partitalViewTest Models Qset div class transbox style height 1 Html Pa
  • 发送变量后的 wsdl 服务响应,php

    我是 SOAP WSDL 函数的新手 我有一位客户从一家从事汽车测试的公司获得了 wsdl 文件 我的客户是他们的分包商 他们告诉我们上传有关车牌 类别等信息 一旦详细信息发送完毕 服务器就会做出成功或失败的响应 请您协助 浏览不同的信息
  • 如何从文件系统访问 api window.showDirectoryPicker() 获取选定的目录路径

    当我选择一个文件夹时 我确实得到了 dirHandle 但无法弄清楚什么属性或方法将为我提供完整路径 const dirHandle await window showDirectoryPicker 所以类似 let path dirHan
  • CSS3 与 JavaScript

    所以我试图在网页上创建一个动画 并试图找到一种使用 CSS3 来实现它的方法 但我对如何做到这一点感到非常困惑 我需要发生的是 当用户单击链接元素时 我希望 div 展开并填充特定于所单击的链接元素的内容 例如 当用户单击标题为 About
  • 如何在 Cakephp 3 中创建按字段集分组的多个复选框

    我在阅读本文档时遇到问题 Cakephp3 Cookbook 表单 创建选择选择器 http book cakephp org 3 0 en views helpers form html creating select pickers我尝
  • 删除 cookie php

    我正在尝试创建一个带有登录系统的平台 并将用户名和密码存储在cookie中 以使用户即使关闭浏览器然后再次输入也能保持登录状态 我设法保存了cookie 但我不知道如何制作注销按钮 这是代码 function logout body app
  • 如何在 PHP Soap 客户端中禁用命名空间别名?

    我的 PHP Microsoft AX 集成有问题 我正在使用 SOAP WSDL 与服务集成 我遇到的问题是在从 PHP 向 WSDL 发送请求后收到此错误 无效的实例类型名称 ns3 AxdEntity DirParty DirOrga
  • 如何生成大型网站的图形站点地图[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想为我的网站生成图形站点地图 据我所知 有两个阶段 抓取网站并分析链接关系 提取树形结构 生成视觉上
  • Android - Java - 发送 facebook 聊天消息的意图(facebook 禁用 xmpp)

    Facebook 已弃用 xmpp API 有没有办法打开意图 或将数据传递到fb 以在Android设备上发送聊天消息 设备上安装的 Facebook 和 Messenger 应用 谢谢 您需要将 uri 传递给意图 这里10000572
  • 是否可以下载网站的完整代码、HTML、CSS 和 JavaScript 文件? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否可以完全下载网站或查看其所有代码 例如 我知道您可以在浏览器中查看页面源代码 但是有没有办法下载所有网站代码 例如 HTML CSS
  • 在 Ruby 中创建带有静态页面的博客的最佳方法

    我刚刚访问了静态网站生成 http www ruby toolbox com categories static website generation html on 红宝石工具箱 http www ruby toolbox com 我不知
  • 为什么 RFC 6797 禁止通过纯 HTTP 响应发送 Strict-Transport-Security 标头?

    在阅读 HSTS 严格传输安全 规范时 我看到了一条禁令第 7 2 节 https www rfc editor org rfc rfc6797 section 7 2禁止在通过 http 而不是 https 访问时发送标头 HSTS 主机
  • 使用脚本从网站中提取电子邮件地址

    给定一个网站 我想知道以编程方式和 或使用脚本的最佳程序是什么 以纯文本形式提取每个页面上存在的所有电子邮件地址 电子邮件受保护 cdn cgi l email protection从该链接和下面的所有站点 递归或直到某个固定深度 使用 s
  • Angular 5 - ag-grid 18.0.1 - 边缘崩溃

    我一直在到处搜索 但无法找到与此相关的任何信息 很可能是因为 ag grid update 18 x 是新的 无论如何 似乎在将 ag grid 从 17 1 1 更新到 18 0 1 后 任何带有 ag grid 的页面最终都会导致 ED
  • 如何从 pl/sql 包运行 http Web 服务请求

    我开发了一个新的程序来调用 Web 服务 但当我运行它时 它显示 Oracle 适配器错误 您能指导我如何解决此错误吗 下面的代码有问题吗 Formatted on 17 07 2014 16 49 02 QP5 v5 185 11230
  • 缺少带有 {:locale=>[:en], :formats=>[:html], 的模板布局/邮件程序

    我正在关注 Michael harlt Rails 教程 但出现此错误 缺少带有 locale gt en formats gt html variants gt handlers gt raw erb html builder 的模板布局
  • 比例背景图像

    我想放大和缩小页面中的背景图像 我尝试过多种方法 但似乎没有一种方法能按照我想要的方式工作 我的页面的网址是http quaaoutlodge com drupal 7 14 http quaaoutlodge com drupal 7 1
  • jekyll 服务显示依赖错误

    尝试在我的网站文件夹之一上运行 Jekyll 服务时 出现以下错误 Dependency Error Yikes It looks like you don t have jekyll sitemap or one of its depen

随机推荐

  • 解析不带引号的键的 JSON

    据我所知 在 JSON 中 键应该用双引号引起来 但是 我使用的数据源没有引用它们 这导致 Ruby JSON 解析器引发错误 有没有办法执行 非严格 解析 Example gt gt JSON parse name hello age 2
  • 如何将带有 unsigned char* 的结构从 C# 传递到 C++?

    我有一些C dll带有结构描述和一些方法 struct MSG STRUCT unsigned long dataSize unsigned char data 和功能例如 unsigned long ReadMsg unsigned lo
  • Vue js动态添加属性不响应

    我有一个组件显示有一个名为obj obj有两个属性 obj title and obj body 每个都绑定到一个文本字段 以便具有反应性和可编辑性 div div
  • 如何在 C# 中截取 Winforms 控件/表单的屏幕截图?

    我有一个listviewwinforms 窗体上的控件 它填满了整个屏幕 但其中的项目超出了屏幕可以显示的范围 如何截取整个控件的屏幕截图 就好像我可以显示控件的全部内容一样listview在屏幕上 所以如果整个listview需要 100
  • 在 MySQL2 gem 中使用准备好的语句?

    如何创建准备好的语句insert and selectMySQL 中的查询 我正在使用 MySQL2 gem 我的连接对象如下所示 con Mysql2 Client new host gt ENV DB HOST port gt 3306
  • 如何从 Repeater 获取更新的 Textbox 值?

    我有一个repeater控制如下所列 它有一个textbox控制 当一个save button单击后 我需要从文本框中获取更新的文本 我有以下代码 但当我获取文本框文本时 它给了我旧值 我们怎样才能得到更新后的文本呢 代码隐藏 protec
  • R:使用ggplot2和lapply生成多个条形图:如何根据列表插入字幕?

    我的目标是生成并保存几个条形图lapply and ggplot2 为此 我根据我的数据创建了一个列表 现在 除了字幕之外 一切都正常 我想将列表元素的名称插入到图表中 到目前为止 我只能插入第一个元素的名称 我找到了另一篇文章 这对我到目
  • ASP.NET MVC 自定义路由类 - 无法获取路由数据

    我正在尝试实现我自己的路由类 继承默认路由 这就是我的自定义路由类的样子 public class FriendlyRoute Route public FriendlyRoute string url RouteValueDictiona
  • R Plotly 默认取消选择迹线

    我正在使用 R Plotly 并有一行以下形式的行 add trace y meanRank x DateOnly data timeSeriesDF name Daily Value text hoverText hoverinfo te
  • 可以使用 Angular 依赖注入代替 RequireJS 吗?

    我从 Angular 开始 如何将一个应用程序的所有代码分解为多个文件 我观看了 60 多分钟的介绍 他们提到我可以在没有 requirejs 或任何其他框架的情况下做到这一点 假设我有这样的东西 效果很好 var app angular
  • ROracle SELECT 语句中的绑定参数

    使用时ROracle in R 我想将一些参数绑定到数据 所以我这样做 gt dbh lt dbConnect Oracle user email protected cdn cgi l email protection port sid
  • SomeType' 是什么意思? [复制]' aria-label='Scala - ' => SomeType' 是什么意思? [复制]'> Scala - ' => SomeType' 是什么意思? [复制]

    这个问题在这里已经有答案了 今天我想问一下什么是 gt SomeType意思是 我发现它用在本文 http www codecommit com blog scala the magic behind parser combinators
  • 使用自签名证书进行代码签名软件

    目前 我们公司使用 Verisign Symantec 的数字证书对我们的软件进行代码签名 我们公司有人试图说服我们使用自签名证书 而不是从 Verisign Symantec 购买的证书 部分是作为 降低成本 的过程 尽管它们对于 2 3
  • 在运行时突出显示 WebDriver 中的元素

    有人可以帮忙吗 在 WebDriver 中执行测试期间 如何突出显示以下类中的所有 Web 元素 使用 Selenium RC 时 一切都非常简单 但使用 WebDriver 时我却遇到了困难 如果有人能为我提供一些我可以尝试的代码 以及该
  • .NET 集合类的渐近复杂度

    是否有任何关于 NET 集合类方法的渐近复杂性 big O 和其他 的资源 Dictionary
  • 为什么 Asp.Net Core 身份验证方案是强制性的

    我对 Asp Net Core 中似乎强制使用身份验证方案这一事实感到非常沮丧 我的目标是构建一个 API 我不想了解有关客户端的任何信息 我已经构建了自定义身份验证和授权 效果很好 我没有使用身份或cookie 但是 如果没有有效的身份验
  • 如何使用 Angular 过滤器对数据进行分组?

    我有一份球员名单 每个球员都属于一个组 如何使用过滤器列出每个组的用户 name Gene team team alpha name George team team beta name Steve team team gamma name
  • jdk1.6内存布局

    我使用的是jdk1 6 我配置了 Xmx 2G Xms 2G 新尺寸 最大新尺寸 660m 我启用了详细GC 我看到了这一点 但我不明白 PSYoungGen total 608256K used 32440K eden space 540
  • 我应该有多少个 DBContext

    使用实体 我目前拥有 dbcontext 其中包含每个表 我想知道是否每个人都这样做 或者例如每个模块都有一个上下文 对我来说 dbcontext 是一种将模型映射到数据库的连接 并且由于只有一个数据库 所以我只需要一个 在我深入讨论之前
  • 防止登录请求泛滥的简单方法?

    如果我的网站使用 POST 表单进行登录 有什么快速 简单的方法可以防止恶意客户端向我的 Web 服务器发送大量 POST 请求 试图暴力破解我的用户帐户 PHP MySQL Apache 防止暴力破解比乍看起来要棘手 解决方案是组合控制