以下是我们OpenID provider的表格:
<form method="post" action="/affiliate/form/login/submit?affId=7" autocomplete="off"> <table class="position-table"> <tr> <td class="input-td"> <input class="framed-text-field" type="text" name="email" id="email" value="" maxlength="100" /> <span class="form-help">name@example.com</span> </td> <td class="input-td"> <input class="framed-text-field" type="password" name="password" id="password" /> <span class="form-help">Password</span> </td> <td></td> <td class="input-td"> <input type="submit" class="affiliate-button" value="Sign In" /> </td> </tr> </table> <input type="hidden" id="fkey" name="fkey" value="REDACTED" /> </form>
此表单是托管在iframe中的页面(at / affiliate / form / login)的一部分。 iframe通过HTTPS(通过HTTP的主机页面)提供。您可以在/users/login
使用隐身/私人浏览/色情模式浏览器窗口查看此操作。
所以这里的问题,定期(但不是一贯)一个用户将GET而不是POST到这个url。这是一个荒谬的低发生,影响到目前为止总共不到50个用户。
这些看起来像真正的用户:广泛的IP,各种有效的用户代理和可信的时间。令人沮丧的是,相同的用户有时会在一段时间后成功地POST相同的表单。
有什么想法可能导致这个?
我已经和丢弃的想法
> HTTPS加速器或负载平衡器发送请求
检查传入的日志,它们与应用程序的内容相匹配
> ASP / .NET请求解析错误
>将传入与记录的请求值进行比较,它们匹配
> Buggy浏览器
>在多个Chrome版本,FireFox 4,Safari和Mobile Safari中记录的事件
机器人或浏览器扩展程序
>宽浏览器,IP和操作系统扩展。
我目前最好的猜测是,在行动中的?id = =绊倒某事(虽然不一致,再次)。这基本上是voodoo调试,所以我更喜欢一个更权威的解释。
更新:尝试我的voodoo修复(< input type =“hidden”name =“affId”value =“#”/>等等),并部署。没有一个责备,所以我只是让它烘烤。
我们每天平均看到几天,所以如果这个2没有问题,我会把它作为答案。
第二次更新:不,还在发生。然而,更少的频率。我正在收集更多的数据,看看浏览器或操作系统是否有任何共同点。
操作理论为什么从动作中去除?affId =#已经减少了事件,客户端面前的错误代理乐观地提取“看起来安全的GET”。这是一个狂野的猜测,所以用一粒盐来处理它。
第三次更新:更多的伪造代理证据。查询受影响的IP的日志(在更长的时间内),并且其中许多具有比大多数未受影响的请求速率高得多的请求速率。它不是100%削减和干燥,我确信有些令人沮丧的清爽是增加了一个tad但是…它仍然是一个合理的指标(差异是5倍左右的同时期的受影响的IP的请求数)。
在这一点上,我正在检测到发生错误,并提供更好的错误消息和指导。对于真正获得权威的答案,尤其是那个答案似乎可能在“我无法控制的代码”的范围内,这一点毫不迟疑。