我知道stackoverflow不是发布此问题的正确位置,但我已经在serverfault发布了这个地方,而且这个地方似乎已经死了。
-
我在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请求是如何可能的,如何阻止它们。
P.S。我故意掩盖了IP。
任何帮助将不胜感激!提前谢谢你。
阻止POST通常不是一种选择,我广泛使用AJAX。我想知道他是如何做这种POST请求以及如何阻止他的。我有成千上万的请求,我经常通过防火墙禁止IP范围,但他只是通过代理跳过。
这是正常的POST请求(通过ajax发生):
2013-11-10 10:16:54 POST /dict/mylang/displaySem.php - 85.73.156.122 Mozilla/5.0+(Windows+NT+6.1;+rv:25.0)+Gecko/20100101+Firefox/25.0 http://www.mydomain.com/dict/mylang/randomword 200 171
答案 0 :(得分:1)
Http允许任何人向您的网站发布请求。在启动长处理算法之前,您的应用程序(不是IIS)应检查它是否是有效请求。
一些常见的验证方法是:
如果您认为他是使用自动脚本直接发布到您的网站,您可以使用CAPTCHA让他很难:http://en.wikipedia.org/wiki/CAPTCHA
如果您认为他正在劫持其他人的会话,您可以在表单中使用CSRF字段:http://en.wikipedia.org/wiki/Cross-site_request_forgery