8

在各种网站上,您经常在页面源中看到表单上的一些隐藏值(通常包含某种常量、键、ID 等)。就像是:

<input type="hidden" name="_submit_check" value="1">

我假设该网站通过检查 _submit_checks 值是否为 1 来仔细检查表单是否已发布。是否可以编辑源并将其更改为 0,然后发布数据,从而使表单无法发布服务器端?

这个例子对服务器来说不是很危险,因为它会简单地忽略请求,但是使用隐藏字段是否存在任何可能的安全风险(除了显而易见的:他们仍然可以读取源中的值,我更担心如果他们可以编辑它)。

4

5 回答 5

11

是的,用户可以复制您的 html 表单,更改值,然后发布到您的服务器。这就是为什么始终验证和清理用户输入很重要的原因,包括服务器端的隐藏输入值,而不仅仅是客户端(即 javascript)。

于 2012-09-13T15:38:52.437 回答
3

是的,您可以对其进行编辑,如今,当 Chrome 和 Firefox 等浏览器集成了 Web 开发工具时,修改值更容易。这就是为什么你不应该相信从 user 收到的数据

于 2012-09-13T15:39:04.447 回答
2

是的你可以。如果您使用 Firebug/IE 开发者工具等,您可以编辑页面上的任何内容并使用该数据提交表单。您还可以运行任何 js 并以这种方式进行编辑。这是您真正需要在对服务器端进行任何操作之前验证所有输入的主要原因之一。

于 2012-09-13T15:39:49.797 回答
1

是的,这是可能的。使用带有内置或作为扩展的开发人员/调试工具的现代浏览器,他们甚至不需要保存表单来编辑它。这就是为什么您永远不应将任何数据视为表单提交并始终对其进行验证和清理的原因。

于 2012-09-13T15:41:38.940 回答
0

是的,使用插件到浏览器的开发人员工具非常容易。此类工具用于欺骗人们并撒谎,即为狡猾的致富计划创建登录页面的人可能会编辑其 Paypal 帐户上的数字,然后截取屏幕截图。这是为了证明他们很富有。

我们中的一些人知道得更好。我们知道一切都需要在互联网世界中得到确认/验证,并且不接受任何表面价值。

我目前正在研究通过将有关表单的信息存储在数据库中来防止 Wordpress 中的表单黑客攻击并加快开发速度。这是即时完成的。所有表单都是使用许多功能构建的,我不编写 HTML 代码。每个可见对象都有一个存储在数据库中的验证方法。在处理期间,该方法被查询和应用。

简而言之,用户可以随心所欲地编辑隐藏的输入。数据库临时保存所有内容的副本,进程使用它。

于 2014-07-18T12:21:57.450 回答