我有一个expresjs应用程序
如何在发布表单时保护ID。
我在表单中有一个隐藏的字段ID:
<input type="text" name="id" id="id" hidden="hidden" value="1">
可以轻松更改id以将无效数据POST到我的数据库。
我该如何保护它?我应该哈希吗?
答案 0 :(得分:2)
我能想到的唯一方法是使用可逆加密方法对值进行加密(哈希因为不可逆转而无法工作)。然后,当您在服务器上收到加密的ID时,将其解密以获取值。
但是,我不建议这样做,只是为了防止有人在回发时更改ID,这没有任何麻烦。您的表单中可能还有其他几十个字段,您如何才能确保所有字段的安全?
我建议您在收到回发数据时进行适当的验证,例如:
如果
User A
正在尝试编辑他的Profile ID 1234
,则当用户完成编辑操作并将数据发回服务器时,表单将隐藏ID 1234
字段,验证User A
是否有权编辑已发布的Profile ID
,如果他有权这样做,那么将ID更改为原始值以外的其他内容并不重要。
答案 1 :(得分:1)
您可能正在尝试解决错误的问题。应在服务器端检查所有POST数据的一致性。