在各种网站上,您经常在页面源中看到表单上的一些隐藏值(通常持有某种常量,键,ID等)。类似的东西:
<input type="hidden" name="_submit_check" value="1">
我假设这个网站是双重检查表单是通过检查_submit_checks值为1发布的。是否可以编辑源并将其更改为0,然后发布数据,从而使表单无法发布服务器侧?
这个例子对服务器来说不是很危险,因为它只会忽略请求,但是使用隐藏字段是否存在任何可能的安全风险(除了明显的:他们仍然可以读取源中的值,我是更担心他们是否可以编辑它。)
答案 0 :(得分:11)
是的,用户可以复制您的html表单,更改值,然后发布到您的服务器。这就是为什么始终验证和清理用户输入非常重要的原因,包括服务器端的隐藏输入值,而不仅仅是客户端(即javascript)。
答案 1 :(得分:3)
是的,您可以对其进行编辑,现在,当Chrome和Firefox等浏览器集成了Web开发工具时,更容易修改值。这就是为什么您不应该信任从用户收到的数据。
答案 2 :(得分:2)
是的,你可以。如果您使用的是Firebug / IE Developer Tools / etc,您可以在页面上编辑任何内容并提交包含该数据的表单。您也可以运行任何js并以这种方式进行编辑。这是您在使用它们之前确实需要验证服务器端所有输入的主要原因之一。
答案 3 :(得分:1)
是的,这是可能的。使用内置的开发人员/调试工具或作为扩展的现代浏览器,他们甚至不需要保存表单来编辑它。这就是为什么你永远不应该相信任何数据作为表单提交,并始终验证和消毒它。
答案 4 :(得分:0)
是的,使用插件浏览器的开发者工具非常容易。这些工具用于欺骗别人和谎言也就是说,为一个狡猾的致富计划创建登陆页面的人可能会编辑他们的Paypal帐户上的数字然后截取屏幕截图。这是为了证明他们很富有。
我们中的一些人知道的更好。我们知道一切都需要在互联网世界中得到确认/验证,并且不接受任何有价值的东西。
我目前正在考虑通过在数据库中存储有关表单的信息来防止Wordpress中的表单黑客攻击并加快开发速度。这是在飞行中完成的。所有表单都是使用许多函数构建的,我不编写HTML代码。每个可见的都有一个存储在数据库中的验证方法。在处理期间,查询并应用该方法。
简而言之,用户可以编辑所有他们喜欢的隐藏输入。数据库暂时保存所有内容的副本,并且进程使用该副本。