HTML隐藏输入不应该是可编辑的
HTML hidden input shouldn't be editable
我刚刚发现了一个bug,我找不到任何解决方案,我想听听你的建议。问题是有一些隐藏的输入类型,在那里存储已经保存的数据的ID,如每个人的ID,如果它已经保存等。
我只是试着改变那个隐藏变量的值手动,使用谷歌浏览器和提交表单,令人惊讶的是,我没有得到应该在那里的id,而是我收到了我改变的id。例如,有一个值是22
,我把它改成了263,我收到了263
,而我应该收到22
。我想要那个22
来而不是那个。
这很难解释,我知道,但我已经尽了最大的努力来传达我的问题,请帮助和建议我,我应该如何存储一些不可编辑的隐藏值。
任何想法?
Web开发规则#1:永远不要相信客户端
Web开发规则#2:永远不要相信客户端
Web开发规则#3:你不能让客户端值得信赖
如果用户不能编辑它,就不要给他们。
正如其他人所说,有几种方法可以处理这种情况。最常见的是在服务器上使用SESSION
变量,几乎在任何地方都可以使用。
将"secret"值存储在SESSION
上。
你无法控制用户在HTTP请求中向你的服务器发送什么数据。
相反,当接收到请求时,在服务器上使用身份验证和授权,以确保允许用户提交他们提交的值。
如果您想要跟踪从一个页面到另一个页面的数据,我会使用会话。这是在服务器上跟踪的数据。
//page one.php
$_SESSION['id'] = 22;
//page two.php
echo $_SESSION['id']; //22
这是浏览器工作的基本功能-本质上有人可以冒充您的表单在字段中添加任何他们想要的值-甚至添加额外的字段。
如果这是一个问题,考虑将数据从隐藏字段移动到会话变量
如果隐藏字段的安全性很重要,请不要在客户端包含它们。客户端变量非常容易修改。
您可能应该将它们存储在会话中,因此它们不会输出到客户端。如果页面上需要它们,则使用AJAX来获取它们。
这取决于你的应用领域,如果是内部软件,我就不会特别担心
看起来不像bug。你害怕什么?这些字段不会被访问者访问和更改。如果你担心有人会破解你的访问者的http请求并改变他的订单(例如),那么https连接应该会有所帮助。
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- Javascript代码添加了一些不应该存在的内容
- 编辑不起作用的表单的特定行和重置特定字段
- 有没有任何情况下,一个方法不应该是原型方法
- 当我认为它不应该重新渲染视图时,如何防止 Meteor 在 html 选择 dom 单击事件上重新渲染视图
- Node.js Promise - 代码不应该等到 .then 完成()
- 跳跃运动:旋转轴 – 如果手静止不动,它不应该在 0 左右
- 如果我不应该在组件WillUpdate中调用setState,如何更新状态(使用ReactJS)
- Javascript:尝试从多个没有匹配的数组中采样,在不应该的时候循环递增
- 为什么触发点击内容可编辑不会激活元素和设置光标
- 这个正则表达式不应该工作吗?
- jqGrid-保存内联编辑不起作用
- 为什么不应该't我在JavaScript中使用Alert
- 如何避免隐藏不应该隐藏的部分
- Node.js应用程序中的编辑不起作用
- 在对javascript/NodeJS应用程序进行原型设计时,应该测试什么,不应该测试什么
- 如果我不应该用流星吗;不需要反应性
- jQuery点击监听器在'It’不应该
- Javascript闭包:这个数组不应该通过getArray进行编辑
- HTML隐藏输入不应该是可编辑的