- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个问题,我构建了这个小脚本来检查某个 ip 是否正在淹没我的网站。当它出现时,我拒绝 .htaccess 文件中的 ip。我的问题是,有人可以告诉我这个脚本是否完全无用或值得尝试...该脚本在配置文件中调用,因此它在每次页面加载时运行。
<?php
#get the visitor ip
$ip = $_SERVER["REMOTE_ADDR"];
#start the session
@session_start();
#check if the ip is banned
if( $_SESSION['~b'] ){
#check if we can open htaccess
$fp = @fopen('./.htaccess','a');
if($fp){
#add the ip to htaccess
@fwrite($fp,"\r\ndeny from $ip");
#close
@fclose($fp);
#destroy the session
@session_destroy();
@mail("my-email","IP Banned","Ip: $ip");
}
#let the user know why we deny him or her access
die('To many requests.');
}
#get the filename and location
$f = './log/'.@ip2long($ip);
#check if the file exists
if ( @is_file($f) ) {
#get the last filetime
$a = @filemtime($f);
#touch the file, give a new filetime
@touch($f,time());
#the ip is not banned
$_SESSION['~b'] = false;
#add the time diff
$_SESSION['~r'] += @time()-$a;
#add the latest hit
$_SESSION['~h'] += 1;
}else{
#create the file if it doesn't exist
@file_put_contents($f,''); #size: 0kb
#if touch() doesn't work
#chmod($ipfile,0755);
}
#calculate the diff after 10 hits, and ban when the avg is smaller than 0.25 seconds
if( $_SESSION['~h'] > 10 && ($_SESSION['~r']/$_SESSION['~h']) < 0.25 ) $_SESSION['~b'] = true;
?>
只是听从了避免 SESSIONS 的建议,所以我让它基于文件,而不必依赖于 cookie 和 session :
<?php
# get the visitor ip
$i = $_SERVER["REMOTE_ADDR"];
# get the filename and location
$f = './log/'.ip2long($i).'.dat';
# check if the file exists and we can write
if ( is_file($f) ) {
# get the last filetime
$a = filemtime($f);
# get the file content
$b = file_get_contents($f);
# create array from hits & seconds
$d = explode(':',$b);
# calculate the new result
$h = (int)$d[0] + 1;
$s = (int)$d[1] + (time()-$a);
# add the new data tot text file
file_put_contents($f,"$h:$s",LOCK_EX);
unset($d);
}else{
# create the file if it doesn't exist hits:seconds
file_put_contents($f,"1:1",LOCK_EX); #size: 3kb
# to make sure we can write
# chmod($f,0755);
# set the hits to zero
$h = 0;
}
# create a result var
$r = $h > 10 ? (float)$s/$h : (float)1;
# calculate the diff after 10 hits, and ban when the avg is smaller than 0.20 seconds (5 hits per second)
if( $r < 0.20 ) {
# check if we can open htaccess
$fp = @fopen('./.htaccess','a');
if($fp){
# add the ip to htaccess
@fwrite($fp,"\r\ndeny from $i");
# close
@fclose($fp);
# mail the admin
@mail("email","IP Banned","Ip: $i with $r sbh (Seconds Between Hits)");
}
# let the user know why we deny him or her access
die('To many requests.');
# remove the file
unlink($f);
}
# if the user leaves, reset
if( $r > 30 ) {
unlink($f);
}
echo 'Result: '.$r.'sbh (Seconds Between Hits)';
?>
最佳答案
如果您想阻止临时用户在特定时间内发送过多请求,那么是,该脚本可以工作。调出一个验证码屏幕,您就可以开始工作了。
但是
真正的答案是不。
此代码的主要错误是根据 session 来确定用户事件的频率。 “好”的攻击者可以用禁用 cookie 的请求淹没您的服务器,并欺骗他/她的 IP。
阻止攻击的一种方法是进入服务器级别,并安装 iptables。事实上,iptables 与大多数 Linux 发行版一起提供。它几乎不需要配置,开箱即用。
另一种方法,如果您对服务器具有根访问权限,则将 session 处理移至 Memcached。有个功能叫防洪,挺BOSS的。
防止 DDOS 的另一种方法是来自第三方服务,例如 block dos http://www.blockdos.net/
有点贵,但它对你有用。
但是 PHP 本身无法配置为处理 DDOS 攻击。在转到 PHP 脚本之前,您需要在所有要审查的请求前放置某种设备或防火墙。
关于PHP、.htaccess、DDoS 和快速请求保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14087117/
1、什么是DDoS DDoS 攻击的目的是让真正的最终用户无法访问目标系统,例如网站或应用程序。通常,攻击者会向目标系统发送大量数据包或请求,从而使目标系统不堪重负。 我们可以把他想象成堵
前言 传统的 DDOS 防御通常使用“硬抗”的方式,导致开销很大,而且有时效果并不好。例如使用 DNS 切换故障 IP 的方案,由于域名会受到缓存等因素的影响通常有分钟级延时,前端难以快速生效。例
我想购买自己的网站 www.zzzwew.com 并对其进行 DDoS,但看起来行不通... 因此,如果我得到一个 goDaddy 页面并尝试对其进行 DDoS 攻击,那会损害 GoDaddy 的一般
我在一个经常受到机器人网络攻击的网站工作。我们已经开始使用这个工具:http://deflate.medialayer.com/哪个自动禁止具有比设置值更多的开放连接的 ip。默认情况下它设置为 15
我有一个应用程序,用户可以在其中注册并输入他们的手机和其他数据。 为了验证用户是否有效,在我将其保存到我的数据库之前,我向用户发送了一 strip 有代码的短信。之后他们应该在表单中输入代码。 问题是
我想知道的是,当发生 ddos 攻击时,Google Analytics 会显示什么样的行为?有什么理论吗? 最佳答案 我的理论是,有效的 DDoS 平台/脚本将不包含任何重量级的 JavaScr
所以,我想获得更多使用高流量网站的经验,但不幸的是,互联网并没有打开我博客的大门。 如何在我的博客上模拟每秒数十/数百次点击并测试其性能?我在共享服务器上使用 SSH 帐户托管我的博客。 最佳答案 您
我正在开发在 Azure 中托管的项目,该项目在幕后使用 Azure 服务,例如设备预配服务和 SignalR。那么,问题很简单 - 如何减轻对 Azure SignalR 和设备配置服务的 DDOS
DDoS(分布式拒绝服务攻击)通常在服务器级别被阻止,对吗? 有没有办法在 PHP 级别阻止它,或者至少减少它? 如果没有,阻止 DDoS 攻击的最快和最常见的方法是什么? 最佳答案 DDOS 是一系
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 10 年前关闭。 Improve this
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我正在尝试学习一些有关计算机安全的知识,并且我想编写一个项目来防止 DDoS 攻击。 我在理论上完全理解 DDoS 攻击,现在我想看到一些行动。 我只是想问一下我应该使用什么语言以及我应该实现什么以节
我有一个问题,我构建了这个小脚本来检查某个 ip 是否正在淹没我的网站。当它出现时,我拒绝 .htaccess 文件中的 ip。我的问题是,有人可以告诉我这个脚本是否完全无用或值得尝试...该脚本在配
2023年10月2日19:32,收到阿里云的通知短信: 【阿里云】尊敬的xxx:您的IP:xxx.xxx.xxx.xxxx 实例名称:blog-xxxxxx 受到攻击,攻击流量已超过DD
在处理对运行 node.js 等非阻塞框架的应用程序的 DDoS 攻击时,是否有任何固有的优点或缺点? 据我了解,这些攻击通过大量请求使系统资源过载 - 导致它失败。非阻塞框架能够处理比阻塞请求更多的
我需要从远程 http 服务器获取一些数据。我正在使用 Curl 类进行多请求。我的问题是远程服务器的防火墙。我在 10000 个 GET 和 POST 请求之间发送 1000 个。服务器禁止我使用
我正在 Microsoft Azure 中运行企业级应用程序。我想知道 Microsoft Azure 中 DDOS 投影的建议是什么。该文档明确指出该平台受到 DDOS 保护,但没有提供更多详细信息
在过去的几天里,我的网站一直是 ddos。 我搞砸了我所有的谷歌分析结果。有没有办法从我的谷歌分析中删除 ddos 攻击中的流量。 最佳答案 一旦数据被收集到您的 View 中,您就无法删除这
我正在为自己的应用程序使用 Azure 负载测试,我刚刚意识到我可以在“测试目标”字段中输入任何 URL。这是否意味着任何 Azure 订阅者都可以针对我的网站“模拟”1,000,000 个并发用户,
我有一个基于 Django 的 Web 应用程序托管在 Azure 配置的虚拟机(Ubuntu 操作系统)上。我的应用程序最近遭遇了 DDoS 攻击,我们对此束手无策。 问题是,一旦流量到达服务器 -
我是一名优秀的程序员,十分优秀!