IIS 日志中出现奇怪的 POST 请求

IIS 日志中出现奇怪的 POST 请求

我注意到我的 IIS(7.5)日志中有一些奇怪的日志条目(除非有一些我不明白的东西)。

这是一本在线词典,其中包含请求(用户友好的 URL 重写),其中大多数是 GET。然而,我注意到有人试图抓取我们的内容,并发出了奇怪的 POST 请求(成千上万个这样的请求)

2013-11-09 20:39:27 GET /dict/mylang/word1 - y.y.y.y Mozilla/5.0+(compatible;+Googlebot/2.1;++http://www.google.com/bot.html) - 200 296
2013-11-09 20:39:29 GET /dict/mylang/word2 - z.z.z.z Mozilla/5.0+(iPhone;+CPU+iPhone+OS+6_0+like+Mac+OS+X)+AppleWebKit/536.26+(KHTML,+like+Gecko)+Version/6.0+Mobile/10A5376e+Safari/8536.25+(compatible;+Googlebot-Mobile/2.1;++http://www.google.com/bot.html) - 200 468

2013-11-09 20:39:29 POST /dict/mylang/word3 - x.x.x.x - - 200 2593

前两个请求是合法的。现在对于第三个请求,我认为我没有允许跨域 POST。如果这就是第三行日志的意思。

所有这些 POST 请求都花费了这么多时间,原因不明。我想知道这些 POST 请求是如何发生的,我该如何停止它们。

附言:我故意隐藏了IP。

任何帮助都将不胜感激!提前谢谢您。

答案1

我不太清楚您说的“跨域发布”是什么意思。此外,日志中的发布不一定是 AJAX 请求。

默认情况下,可以使用各种 http 动词来请求您网站上的资源。由于 GET 的使用频率最高,因此没有什么可以阻止客户端在请求资源时使用 POST。这就是您在日志中看到的内容。

假设您正在使用现代 IIS (7+),您可以指定在站点、目录或文件基础上允许使用哪些动词。

你说你正在使用某种路由,所以你可能没有目录或文件,你仍然可以设置允许的动词,在你的 web.config 中的配置根下添加如下内容:

<location path="dict/mylang">
<system.webServer>
    <security>
        <requestFiltering>
            <verbs>
                <add verb="POST" allowed="false" />
            </verbs>
        </requestFiltering>
    </security>
</system.webServer>

在位置节点中,您告诉 IIS 仅将此应用于特定 URL,然后您只说,此处不允许任何 POST 请求。这在 IIS GUI 中是不可能的。

另外,您仍然会在日志文件中收到条目,但它们将是 404,其子状态为 6(动词被拒绝),并且它们不会花费那么长时间。

相关内容