首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >表单被随机提交为GET而不是POST

表单被随机提交为GET而不是POST
EN

Stack Overflow用户
提问于 2011-06-01 03:57:53
回答 3查看 4.6K关注 0票数 20

这有点疯狂。

这是我们OpenID provider上的一张表格

代码语言:javascript
复制
  <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中托管的页面(位于/affiliate/form/login)的一部分。iframe是通过HTTPS提供的,HTTPS是HTTP上的主页。你可以使用匿名/私人浏览/色情模式的浏览器窗口在/users/login上看到这一点。

所以这就是问题所在,用户会周期性地(但不是持续地)得到这个url,而不是发布到这个url。这是一个低得离谱的事件,到目前为止影响的用户总数不到50人。

我很想直接dev/null这些错误(没有操作方法等),但是...

这些看起来像真正的用户:广泛的IP分布,各种各样有效的用户代理,以及可信的时间安排。令人沮丧的是,同样的用户有时会在稍晚一点的时候成功地发布相同的表单。

你知道这是什么原因造成的吗?

我曾经有过的想法和被抛弃的想法:

error

  • Compared

  • HTTPS加速器或负载均衡器控制requests

  • checked传入日志,它们与解析error

  • Compared传入到记录的请求值的

  • /.NET请求所获得的内容相匹配,它们与多个Chrome版本、Safari 4、Safari和移动Safari error

  • Compared browser

  • Logged或crummy browser extensions

  • Wide、IP和OS传播中出现的

  • FireFox

  • Bot匹配。

我目前最好的猜测是,动作中的?affId=#触发了某些东西(尽管不是一直如此)。这基本上是巫毒调试,所以我想要一个更权威的解释。

更新:尝试了我的巫毒修复(<input type="hidden" name="affId" value="#" />等),并进行了部署。没有复制品,所以我就让它烘烤吧。

我们平均一天会看到几个,所以如果这个在2+上没有问题,我会把它作为答案发布出来。

第二次更新:没有,还在进行中。然而,这种情况发生的频率要低得多。我正在收集更多的数据,看看在浏览器或操作系统方面是否有任何共性。

关于为什么从操作中删除?affId=#会减少发生的操作理论是有缺陷的代理在客户面前乐观地获取“看起来安全的东西”。这是一个大胆的猜测,所以对它持保留态度。

第三次更新:伪造代理的更多证据。查询受影响IP的日志(持续时间要长得多),其中许多IP的请求率比大多数未受影响的IP高得多。这并不是百分之百的干干净净,我相信一些沮丧的提神是增加了一点数量,但…这仍然是一个合理的指标(对于受影响的is,差异是同期请求数量的5倍左右)。

在这一点上,我将转到检测发生的错误,并提供更好的错误消息和指导。对于实际得到一个权威的答案相当冷淡,特别是因为这个答案似乎很可能存在于“我不能控制的代码”的领域。

EN

回答 3

Stack Overflow用户

发布于 2011-06-01 04:20:24

一些广告拦截浏览器扩展程序,如AdBlock Plus Popup addon,在决定是否屏蔽之前,会“探测”相应的页面,以确定它们的真实网址。具体地说,前面提到的弹出插件在默认情况下使用HEAD查询执行此操作,但可以设置为执行GET查询。

票数 3
EN

Stack Overflow用户

发布于 2013-08-29 17:42:50

在Chrome用户中也有类似的问题,原因是如果有人在google Chrome中使用shift+enter提交表单,浏览器将打开新的标签并发出不带参数的GET请求。由于人们通常使用大写/特殊字符作为密码的最后一个字符,因此他们在释放shift之前按enter键,然后发出GET请求。

我看到你在列举浏览器时首先提到了Chrome,所以如果Chrome中出现问题的频率更高,可能是因为这个原因。

虽然这可能不是你遇到的唯一问题,但它可能会对你有所贡献。

票数 1
EN

Stack Overflow用户

发布于 2011-06-03 12:44:06

通过验证器运行源HTML,确保其格式正确。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6192837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档