遇到个奇葩case,图文并茂的多个.asp站点,访问过快就会出现403 forbidden,具体特征:
代码语言:javascript复制1、点浏览器的刷新按钮点多快都没事,F5刷新也没事(因为走了浏览器本地缓存,并不会对服务器产生多大影响)
2、Ctrl F5强制刷新,连续快刷几次就会出现403 forbidden
分析:
1、新建应用程序池,保持默认设置,替换asp站点原来的应用程序池
代码语言:javascript复制结果:问题依旧,F12看到受影响l全是.css等静态URL
访问日志里都是403 502的记录,HTTP Error日志没产生记录
代码语言:javascript复制IIS Log:%SystemDrive%inetpublogsLogFilesW3SVC{siteid}
C:inetpublogsLogFilesW3SVC{siteid}
HttpErr Log : %SystemDrive%WindowsSystem32LogFilesHTTPERR
C:WindowsSystem32LogFilesHTTPERR
注意事项:
IIS和HTTPERR日志都是UTC 0,换算到北京时间需要 8小时
比如我截图的时间是2023-3-1 02:24:52实际就是2023-3-1 10:24:52
2、新建的应用程序池附加给新建的动态测试站点(只有一个index.asp和index.aspx)
代码语言:javascript复制结果:问题消失
index.asp代码如下:
代码语言:javascript复制<%Response.Write "Hello World!"%>
index.aspx代码如下:
代码语言:javascript复制<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %>
<Script Language="C#" runat="Server">
void Page_Load(Object src, EventArgs e)
{
label1.Text = "Hello World";
}
</Script>
<html>
<head>
<title>使用Page_Load建站测试</title>
</head>
<body>
<asp:Label id="label1" Font-Size="28px" Font-Bold="True" runat="server" />
</body>
</html>
3、新建的应用程序池附加给新建的静态测试站点(只有一个index.html页面)
结果:Ctrl F5快速连续按键,成功复现问题
index.html代码如下:
代码语言:javascript复制<html>
<body>
<a href="http://www.baidu.com/"> www.baidu.com</a>
<body>
</html>
在公网访问:
访问日志里都是403 502的记录,但公网访问时只报了403,并没有把502报出来
HTTP Error日志没产生记录(默认路径C:WindowsSystem32LogFilesHTTPERR)
在机器内部用内网ip访问:直接报了更精确的403.502
此时已经比较明确了,直接Google去搜"IIS 403.502"头几条就有方向了
403.502 - Forbidden: Too many requests from the same client IP; Dynamic IP Restriction limit reached.
https://knowledge.broadcom.com/external/article/6550/how-to-resolve-a-4034-forbidden-error-a.html
https://blogs.iis.net/peterviola/preventing-automated-attacks-with-iis-dynamic-ip-restrictions
4、上述3个实验都是在有问题的机器操作的,在相同系统的其他机器上,相同代码的所有站点都不存在这个问题
结论:通过上述对比,证明此问题只涉及问题机器的静态资源,跟操作系统无关,并且代码没有问题、也跟应用程序池无关(因为新建的应用程序池保持了默认设置),大概率是IIS配置导致的。
IIS配置主要3大块:应用程序池配置、全局配置、站点个性化配置,因为问题机器全部站点都有这个问题,且应用程序池已排除,所以,如果是IIS配置导致的,那肯定是全局配置部分限频相关的配置造成访问限制导致403.502的。
如下图:主机名那块是全局,站点名那块是个性化
全局
个性化
微软的图标设计非常好,跟限制有关的几个配置都有醒目的红色,比如:
或者直接搜"限制"
而鼠标放到图标上就有主要功能介绍,如下:
很显然"IP 地址和域限制"就是我们要找的东西
默认是未配置的:为空
很显然有问题的机器这里是配过的,取消配置后,问题消失
技能扩展:如何收集IIS日志
https://cloud.tencent.com/developer/article/2241216