我有一个已经运行了一段时间的站点,它使用大量用户输入来构建站点。网站上自然有几十种表格。在构建站点时,我经常使用隐藏的表单字段将数据传回服务器,以便我知道要更新哪条记录。
一个例子可能是:
<input type="hidden" name="id" value="132" />
<input type="text" name="total_price" value="15.02" />
提交表单时,这些值会传递到服务器,然后我根据传递的数据更新记录(即记录 132 的价格将更改为 15.02)。
我最近发现你可以通过像萤火虫这样简单的东西来改变属性和值。所以...我打开 firebug 并将 id 值更改为“155”,将价格值更改为“0.00”,然后提交表单。中提琴!我在网站上查看产品编号 155,现在它说它是 0.00 美元。这让我很担心。
如果没有查询字符串(容易修改)或隐藏的输入元素将 id 传递给服务器,我如何知道要更新哪个记录?
如果没有更好的方法(我已经看到数以千计的网站以这种方式传递数据),那么我将如何做到这一点,以便如果用户更改这些值,服务器端的数据不会被执行(或其他东西类似解决问题)?
我曾考虑过加密 id 然后在另一边解密它,但这仍然不能保护我免受有人更改它并且碰巧得到与数据库中另一个 id 匹配的东西。
我也考虑过 cookie,但我听说它们也可以被操纵。
有任何想法吗?这对我来说似乎是一个巨大的安全风险。