禁用<input type =“submit”/>的表单是否可以被黑客攻击提交?

时间:2013-12-03 18:08:28

标签: javascript html forms

我只是对<input type="submit" />标签的安全性感到好奇。

如果我有一个表单(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>

非常感谢!

编辑:Duh。当然它不安全,因为“禁用”完全在客户端,就像所有HTML一样。我是个白痴。

9 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:2)

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

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

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

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

表格也可以使用服务器端库(如cURL

)提交

答案 2 :(得分:1)

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

例如,Tampermonkey

答案 3 :(得分:1)

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

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

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

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

如果难以找到(不是第一种形式),那么在较旧的浏览器上可能需要更多行代码,但就是这样。

答案 4 :(得分:1)

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

答案 5 :(得分:0)

我同意可以提交,其中一种方法是通过网址:http://website.com/processors.php(POST所有内容)

因此,如果您不希望提交,可以使用Servlet检查或其他安全措施

答案 6 :(得分:0)

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

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

答案 7 :(得分:0)

是的,他们可以通过更改$ disabled =&#34;禁用&#34; $到$ disabled =&#34; false&#34; $来改变HTML并启用表单。将服务器设置为不接受无效输入。

答案 8 :(得分:-1)

当然可以破解你“愚蠢”的形式。因此,如果您将在服务器端进行所有必要的验证,那么肯定会更好。