Kev*_*ose 17 html browser asp.net-mvc-3
这有点疯狂.
这是我们的OpenID提供商的表格:
<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>
Run Code Online (Sandbox Code Playgroud)
此表单是/affiliate/form/loginiframe中托管的页面(at )的一部分.iframe通过HTTPS(HTTP上的主机页面)提供.您可以/users/login使用隐身/私人浏览/色情模式浏览器窗口查看此操作.
所以这是问题,定期(但不一致)用户将GET而不是POST到此URL.这是一个荒谬的低发生率,迄今为止影响的用户总数不到50个.
我很想知道dev/null这些错误(没有行动方法等等),但......
这些看起来像真正的用户:广泛的IP,各种有效的用户代理和可信的时间.令人沮丧的是,相同的用户有时会稍后成功地发布相同的表单.
可能导致这种情况的任何想法?
我已经拥有并丢弃的想法:
我目前最好的猜测是,?affId=#在行动中绊倒的东西(虽然不是一贯的,但是).这基本上是巫毒调试,所以我喜欢更权威的解释.
更新:尝试了我的伏都教修复(<input type="hidden" name="affId" value="#" />等等),并进行了部署.没有一个repro,所以我只是让它烘烤.
我们平均每天都会看到几个,所以如果这个没有问题的2+,我会把它作为答案发布.
第二次更新:不,还在发生.然而,更不频繁.我正在收集更多数据,以确定浏览器或操作系统是否存在任何共性.
关于为什么?affId=#从行动中删除减少发生的操作理论是客户面前的错误代理,乐观地获取"看起来安全的东西".这是一个疯狂的猜测,所以用一粒盐对待它.
第三次更新:虚假代理的更多证据.查询受影响IP的日志(在更长的时间段内),其中许多请求率比大多数未受影响的IP要高得多.它不是100%切割和干燥,而且我确信一些令人沮丧的清爽增加了计数但是......它仍然是一个合理的指标(差异是受影响IP的同一时期的5倍左右的请求数量) ).
此时,我正在检测已发生的错误并提供更好的错误消息和指导.对于实际获得权威性答案而言并不热心,特别是因为答案似乎可能存在于"我无法控制的代码"领域.
一些广告拦截浏览器扩展(例如AdBlock Plus Popup 插件)会“探测”伴随页面,以确定其真实 URL,然后再决定是否阻止它们。具体来说,前面提到的 Popup 插件默认使用 HEAD 查询来执行此操作,但可以设置为执行 GET 查询。