【问题标题】:Can a form with a disabled <input type="submit"> be hacked to submit anyway?带有禁用 <input type="submit"> 的表单是否可以被黑客入侵以提交?
【发布时间】:2020-08-20 23:41:37
【问题描述】:

我只是对&lt;input type="submit" /&gt; 标签的安全性感到好奇。

如果我有一个只有一个“提交”按钮的表单(带有method="post"),该按钮被禁用,并且我没有编写任何影响表单、按钮或其其他内容的 JS/AJAX/jQuery ,还有人可以找到提交表单的方法吗?

这是我正在谈论的表格的代码:

<form method="post" action="processor.php" enctype="multipart/form-data">
<input type="text" name="foo" value="bar" />
<input type="submit" value="Submit" disabled="disabled" />
</form>

非常感谢!

【问题讨论】:

  • html 表单中存在NO安全性。表单存在于用户的浏览器中,根据定义,用户可以完全控制浏览器中的内容。自己尝试一下:安装 Firefox,右键单击提交按钮,“检查元素 (Q)”,然后砰……尽情享受。他们甚至不必使用您的表格。他们可以创建自己的表单并将您的表单地址作为他们表单的action
  • 攻击者可以发送他们想要的任何 HTTP 请求,不管你在 HTML 中放了什么。

标签: javascript html forms


【解决方案1】:

是的,我什至不需要您的表单来提交它。我可以使用 cURL 或类似的库来发送 POST 请求,就好像它来自表单一样。

始终在服务器端验证所有内容,您并不总是得到您期望的结果。

【讨论】:

    【解决方案2】:

    任何熟练掌握大多数现代浏览器的“元素检查器”的人都可以添加/编辑/删除任何属性及其值。

    使用此方法我可以删除disabled 属性,然后只需单击提交按钮

    你可以像这样通过控制台或地址栏/书签运行javascript

    javascript:document.getElementsByTagName("form")[0].submit();void(0);
    

    也可以使用 cURL 等服务器端库提交表单

    【讨论】:

    • 是的,我自己用 Chrome 的 Inspector 完成的。傻我。谢谢!
    【解决方案3】:

    客户端上的任何东西都可能被黑客入侵。不要相信客户。始终在服务器上进行验证。

    例如,Tampermonkey

    【讨论】:

      【解决方案4】:

      当然。在控制台(或书签)中输入此内容即可,包括 IE8 及更高版本在内的所有现代浏览器:

      document.querySelector("form[action=processor.php]").submit();
      

      在旧浏览器上,如果是第一种形式:

      document.getElementsByTagName("form")[0].submit();
      

      如果更难找到(不是第一种形式),那么在旧版浏览器上可能需要多几行代码,但仅此而已。

      【讨论】:

        【解决方案5】:

        是的,他们绝对可以。 作为一般规则,不要依赖 anything 客户端的安全性。恶意用户可以并且将操纵任何客户端代码。 无论您的前端代码提出什么请求,您都需要确保后端的一切都是安全的。

        【讨论】:

          【解决方案6】:

          其他答案表明您可以直接提交表单而无需使用您的表单,这也是正确的。我只是想指出,此外,用户也可以取消禁用您的按钮,然后单击它(使用 Firebug 或等效的)。您发送给客户端的任何 html 或其他文本,他们可以随意修改。

          禁用客户端按钮非常适合提高可用性(例如,在 ajax 更新期间禁用,或者如果需要的字段缺少值),但它不应该成为任何与安全相关的工具包的一部分。

          【讨论】:

            【解决方案7】:

            是的,他们可以简单地更改 HTML 并通过将 $disabled="disabled"$ 更改为 $disabled="false"$ 来启用表单。将您的服务器设置为不接受无效输入。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2017-05-17
              • 2015-05-01
              • 2021-10-03
              • 2020-11-01
              • 1970-01-01
              • 2013-09-19
              • 1970-01-01
              • 2019-02-13
              相关资源
              最近更新 更多