- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在尝试在 PHP 中实现一种 IP 黑名单,我将失败的登录尝试存储到具有以下架构的 MySQL 表中:
CREATE TABLE blacklist(
`ip_address` VARCHAR(35) NOT NULL,
`failures` INTEGER DEFAULT 0,
`release_time` BIGINT DEFAULT -1,
PRIMARY KEY(`ip_address`)
);
在登录检查中,我首先使用以下查询删除发布时间早于当前时间(如果发布时间已过)的所有黑名单条目:
/* I pass in time() */
DELETE FROM failures WHERE release_time < ?;
然后我执行以下命令:
/* I pass in $_SERVER['REMOTE_ADDR'] */
SELECT failures FROM blacklist WHERE ip_address=?
如果我没有检索到任何行,或者如果我返回的 $row['failures'] 超过 5,我允许检查用户名和密码。否则,我完全拒绝登录。
对于每次失败的登录尝试(无论是通过黑名单规则还是通过无效的用户名/密码),我都会执行:
/* IP address is $_SERVER['REMOTE_ADDR'],
release_time is current time + (new failures * 90 minutes) */
INSERT INTO BLACKLIST(ip_address, failures, release_time) VALUES(?,?,?)
ON DUPLICATE KEY UPDATE failures=failures+1, release_time=?;
不幸的是,我至少访问了数据库 3 次(清除黑名单、获取 IP 地址、以最少的失败次数递增)。有没有更好的方法来维护动态黑名单,也许每分钟写入缓存?
我确实看到了Banning by IP with php/mysql与我的问题类似,但如果人们在一段时间内停止尝试登录,我允许他们从黑名单中删除。这样,那些忘记凭证的人所受到的影响就比那些试图通过暴力获取凭证的人受到的影响要小。
最佳答案
以下查询不需要定期运行,可以移至 cron 作业:
DELETE FROM failures WHERE release_time < ?;
如果此人被列入黑名单,此“ bool ”查询将返回 1,否则返回 0:
SELECT
COUNT(ip_address) as blacklisted
FROM blacklist
WHERE
ip_address = ? AND
release_time > ? AND
failures > 5
它可能会加快速度,因为您不使用 PHP 来计算行数和比较数字:
if ($row['blacklisted']) { /* ... */ }
我认为你真的无法避免最后一个。
关于php - PHP+MySQL 中的 IP 黑名单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12513727/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
你咋不上天 傲娇的野狗 最霸气的方式 野权少女. 黑名单° 一个酷girl. 怪味野痞 小子,你的高傲呢。 未来、来不了 看尽事态的炎凉 灵魂傀儡 愿你安好 倾他
我们有一组用户 CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `email` varchar(254) NOT
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve thi
我想知道是否有一种方法可以在 Android(考虑 2.1 及更高版本)上过滤(阻止)来电。我找到了使用反射的解决方案,但它似乎不是非常干净可靠的解决方案。是否有任何标准或谷歌推荐的方法来做到这一点?
作为在非常大的代码库中永久修复 XSS 漏洞的同时减轻主要风险的临时快速修复,我正在寻找一个预先存在的 XSS 预防黑名单,它可以合理地防止 XSS . 最好是一组正则表达式。我知道有很多用于测试和冒
有没有办法在我的应用程序中的每个组件被挂载之前定义一个函数来 Hook ? 这个想法是,如果一个组件被列入黑名单,它根本就不会挂载。 为了向后兼容,解决方案必须不修改组件,并且应该在生产中运行(因此重
有没有办法,例如一个 Maven 插件,它可以获取不需要的/黑名单依赖项(直接和传递)的列表,如果它检测到列出的依赖项之一,则构建失败? 在我的项目中,我们非常希望摆脱 Apache Commons
这是我的persistConfig 和store 代码,我想为tracking 添加blacklist,但没有对于所有跟踪状态,但仅针对 tracking.checkingOut、tracking.c
我正在尝试启动Kafka使用者,但显示以下错误: $ bin/kafka-console-consumer.sh --zookeeper localhost:2181 —topic Hello-Kaf
此处解释的 IP 白名单/黑名单示例 https://kubernetes.io/docs/tutorials/services/source-ip/使用 source.ip 属性。但是,在 kube
一个经典的例子是: schema = Joi.object().keys({ my_string: Joi.string().valid("myString").required() });
我想检查用户在我拥有的富 HTML 编辑器中使用的 HTML 标签。我不确定如何在 C# 中执行此操作。 我应该使用正则表达式吗?我应该将哪些 HTML 标记列入黑名单/白名单? 最佳答案 一个简单的
我正在编写一个 Django 应用程序,用于跟踪允许哪些电子邮件地址将内容发布到用户帐户。用户可以根据需要将地址列入白名单和黑名单。 任何未指定的地址都可以按消息处理或仅默认为白名单或黑名单(同样由用
情况: 我有一个用户 模型,它需要通过列入黑名单的电子邮件地址列表进行验证。列入黑名单的电子邮件地址位于名为黑名单 的额外模型中 模型/用户.rb: class User "E-Mail")
我的脚本会打开两个文件:whitelist.txt 和 blacklist.txt,其中包含 IP 地址。 我想将 blacklist.txt 中不存在于 whitelist.txt 中的所有 ip
我正在寻找一种在 Apache 2.4.x 中将 IP 地址列入黑名单的简单方法。我的网站将尝试非法操作的 IP 地址记录到文本文件中。我想在 Apache 中使用这个文本文件来拒绝对这个 ip 列表
在我的基础项目中,我使用 JasperReports 的依赖项,它的 pom.xml 中具有不存在的存储库声明。当我运行每个 Maven 命令时,都会有依赖项在这个 Jasper 存储库中寻找 com
我一直在尝试在 PHP 中实现一种 IP 黑名单,我将失败的登录尝试存储到具有以下架构的 MySQL 表中: CREATE TABLE blacklist( `ip_address` VARC
是的,我知道有 Voter tutorial in cookbook .但我正在寻找稍微不同的东西。我需要两层不同的黑名单: 拒绝某些 IP 访问整个网站 拒绝某些IP登录 我写了 Voter 检查用
我是一名优秀的程序员,十分优秀!