可以使用禁用<输入类型=“;提交”>无论如何都要被黑客入侵才能提交

Can a form with a disabled <input type="submit"> be hacked to submit anyway?

本文关键字:提交 黑客 入侵 无论如何 类型 输入 lt 可以使 gt      更新时间:2024-02-26

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

如果我有一个形式(具有method="post");提交";按钮,它被禁用了,而且我还没有写任何影响表单、按钮或其其他内容的JS/AAJX/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>

非常感谢!

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

总是在服务器端验证所有内容,你并不总是得到你想要的。

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

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

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

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

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

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

例如,坦珀蒙基。

当然。在控制台(或小书签)中输入即可,所有现代浏览器包括IE8及以上版本:

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

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

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

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

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

其他答案表示,您可以在不使用表单的情况下直接提交表单,这也是正确的。我只是想指出,除此之外,用户还可以取消禁用您的按钮,然后单击它(使用Firebug或等效工具)。你发送给客户端的任何html或其他文本,他们都可以随意修改。

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

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