你如何计算一个ip访问网站的次数将其列入黑名单?
How do you calculate the times an ip is accesing a website to blacklist it?
我有一个客户的网站受到暴力 攻击。我使用以下方法检测到许多对该站点的欺诈性 ip 访问:
echo $_SERVER['HTTP_REFERER'] . " - " . getIp() . date("Y-m-d H:i:s");
我可以看到 ips 正在多次访问该网站,每秒 10 次。
我需要阻止所有具有这种行为的 ips,你建议怎么做?
(是一个简单的 Wordpress 博客)
"brute force" 攻击是指有人试图提交 username/password 以期获得对您网站限制区域的访问权。要处理此问题,您可以设置规则,规定 IP 在被阻止之前可以尝试提交不正确的登录凭据的次数。您可以在数据库中记录详细信息并使用它。对于 WP,您可以使用插件来限制登录尝试。
https://www.wpoptimus.com/912/ban-ip-addresses-login-wordpress-dashboard/
另一方面,"DoS" 攻击是用请求淹没您的服务器。这种攻击无法通过代码来处理,需要在服务提供商层面进行。
此外,您还可以在控制面板中选择将 ips 列入黑名单。
这条规则可能有效:
每秒超过 10 个(考虑你自己)请求是欺诈 IP 的信号,这可能是受控的。
MySQL:
DROP TABLE IF EXISTS `tbl_request`;
CREATE TABLE `tbl_request` (
`codigo_request` bigint(11) NOT NULL AUTO_INCREMENT,
`ipnumber` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`date` datetime DEFAULT NULL,
`is_hacking` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL,
`milliseconds` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL,
`blacklisted` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`codigo_request`)
) ENGINE=InnoDB AUTO_INCREMENT=541192 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
欺诈性 IPS:
select *, SUM(count) AS totalCount from (
select *, count( ipnumber ) as count from tbl_request group by ipnumber, date HAVING count >= 10 order by count DESC
) AS T GROUP by T.ipnumber order by totalCount DESC
PHP:
$request = new Request();
$request->setIpnumber( get_client_ip() );
$request->setDate(getDateForDatabase());
$request->insert();
$fips = $request->getFraudulentIps();
foreach ($fips as $k => $v) {
$v->blacklist();
}
我有一个客户的网站受到暴力 攻击。我使用以下方法检测到许多对该站点的欺诈性 ip 访问:
echo $_SERVER['HTTP_REFERER'] . " - " . getIp() . date("Y-m-d H:i:s");
我可以看到 ips 正在多次访问该网站,每秒 10 次。
我需要阻止所有具有这种行为的 ips,你建议怎么做?
(是一个简单的 Wordpress 博客)
"brute force" 攻击是指有人试图提交 username/password 以期获得对您网站限制区域的访问权。要处理此问题,您可以设置规则,规定 IP 在被阻止之前可以尝试提交不正确的登录凭据的次数。您可以在数据库中记录详细信息并使用它。对于 WP,您可以使用插件来限制登录尝试。 https://www.wpoptimus.com/912/ban-ip-addresses-login-wordpress-dashboard/
另一方面,"DoS" 攻击是用请求淹没您的服务器。这种攻击无法通过代码来处理,需要在服务提供商层面进行。
此外,您还可以在控制面板中选择将 ips 列入黑名单。
这条规则可能有效: 每秒超过 10 个(考虑你自己)请求是欺诈 IP 的信号,这可能是受控的。
MySQL:
DROP TABLE IF EXISTS `tbl_request`;
CREATE TABLE `tbl_request` (
`codigo_request` bigint(11) NOT NULL AUTO_INCREMENT,
`ipnumber` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`date` datetime DEFAULT NULL,
`is_hacking` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL,
`milliseconds` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL,
`blacklisted` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`codigo_request`)
) ENGINE=InnoDB AUTO_INCREMENT=541192 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
欺诈性 IPS:
select *, SUM(count) AS totalCount from (
select *, count( ipnumber ) as count from tbl_request group by ipnumber, date HAVING count >= 10 order by count DESC
) AS T GROUP by T.ipnumber order by totalCount DESC
PHP:
$request = new Request();
$request->setIpnumber( get_client_ip() );
$request->setDate(getDateForDatabase());
$request->insert();
$fips = $request->getFraudulentIps();
foreach ($fips as $k => $v) {
$v->blacklist();
}