这条规则可能有效:
每秒超过 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();
}