我只是对<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一样。我是个白痴。
答案 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)
当然可以破解你“愚蠢”的形式。因此,如果您将在服务器端进行所有必要的验证,那么肯定会更好。