Javascript 可以使用禁用的<;输入类型=";提交&燃气轮机;还是被黑客攻击提交?

Javascript 可以使用禁用的<;输入类型=";提交&燃气轮机;还是被黑客攻击提交?,javascript,html,forms,Javascript,Html,Forms,我只是好奇标记的安全性 如果我有一个表单(带有method=“post”),只有一个“Submit”按钮,该按钮被禁用,并且我还没有编写任何影响表单、按钮或其其他内容的JS/AJAX/jQuery,那么还有人能找到提交表单的方法吗 下面是我所说的表单代码: <form method="post" action="processor.php" enctype="multipart/form-data"> <input t

我只是好奇
标记的安全性

如果我有一个表单(带有
method=“post”
),只有一个“Submit”按钮,该按钮被禁用,并且我还没有编写任何影响表单、按钮或其其他内容的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>


多谢

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


例如,.

当然。在控制台(或bookmarklet)中键入此命令即可,所有现代浏览器包括IE8及以上版本:

document.querySelector("form[action=processor.php]").submit();
在较旧的浏览器上,如果是第一种形式:

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

如果很难找到(不是第一个表单),那么在较旧的浏览器上可能需要多几行代码,但仅此而已。

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


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

是的,他们绝对可以。 一般来说,不要依赖任何客户端的安全性。恶意用户可以并将操纵任何客户端代码。
无论前端代码发出什么请求,您都需要确保后端的所有内容都是安全的。

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


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

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

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

您可以通过控制台或地址栏/书签运行javascript,如下所示

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

表单也可以使用诸如cURL之类的服务器端库提交。是的,它们可以简单地更改HTML并通过将$disabled=“disabled”$更改为$disabled=“false”$来启用表单。将服务器设置为不接受无效输入

html表单中没有安全性。表单存在于用户的浏览器中,根据定义,用户可以完全控制浏览器中的内容。你自己试试看:安装firefox,右键点击提交按钮,“检查元素(Q)”,然后弹出。。。尽情摆弄吧。他们甚至不用用你的表格。他们可以创建自己的表单,并将您的表单地址作为表单的
操作
。攻击者可以发送他们想要的任何HTTP请求,而不管您在HTML中添加了什么。是的,只是自己用Chrome的Inspector做的。我真傻。谢谢