HTML - 如何防止用户编辑表单的值?

时间:2011-05-29 15:00:11

标签: php webforms user-input

我正在开发一个简单的网络应用程序,当我发现我可以使用Chrome编辑该表单的输入默认值时,用户可以使用表单输入信息 - >检查元素并提交具有不同hacked值的页面。

代码:

<input id="radioOk_100237" name="radio_100237" type="radio" checked="" value="0"> 

正常情况下,我加载页面然后使用Google Chrome Check Element,我将此复选框作为目标并在提交之前将值更改为“9”,在我的后台页面中,它显示为“9”而不是预设值来自此输入元素的“0”。

如果每个用户都更改了值并提交,它将彻底打乱我的数据库。这怎么可能,我应该在提交之前加密页面或做些什么?我完全迷失了,顺便说一下,我正在使用PHP。

4 个答案:

答案 0 :(得分:15)

对于典型用户,您只需将属性readonly添加到表单字段即可。

对于尝试操作服务器的更高级用户/黑客,您需要验证提交的每个数据片段,以确保捕获和拒绝篡改。没有客户端技术可以防止篡改。

答案 1 :(得分:3)

您需要进行服务器端验证,以确保从客户端应用程序获得的值有意义。如果您知道值“9”将“摧毁您的数据库”,请不要接受来自客户端的值9。

强制性XKCD链接:http://xkcd.com/327/

答案 2 :(得分:2)

您无法阻止用户修改,添加或删除DOM中的元素。如果你想要那种控制,你应该将你输出的元素的值存储在一个对象中,然后比较来自表单的内容。

如果你想发布一个例子

,有一百万种方法可以做到这一点

答案 3 :(得分:2)

您可以在服务器端检查正确的值类型。实际上,您应该检查从客户端发送的每个数据以防止攻击