Javascript 安全html表单变量

Javascript 安全html表单变量,javascript,html,forms,secure-coding,inspect-element,Javascript,Html,Forms,Secure Coding,Inspect Element,我不希望我的用户能够使用inspect元素更改('+res.id+')和('+res.level'),因为如果他们这样做,将更改submit按钮的结果 例如,“+res.id+”等于2,2等于firedragon,但如果用户使用inspect元素,则可以将2更改为1,1等于lightningdragon。然后,当他们点击“战斗”时,火龙变成了闪电龙。基本上,他们可以与任何人/任何他们想要的人作战 是否有任何方法阻止人们更改这些变量,或者检查变量是否已更改,以便我可以向用户发送错误消息

我不希望我的用户能够使用inspect元素更改('+res.id+')和('+res.level'),因为如果他们这样做,将更改submit按钮的结果

例如,“+res.id+”等于2,2等于firedragon,但如果用户使用inspect元素,则可以将2更改为1,1等于lightningdragon。然后,当他们点击“战斗”时,火龙变成了闪电龙。基本上,他们可以与任何人/任何他们想要的人作战

是否有任何方法阻止人们更改这些变量,或者检查变量是否已更改,以便我可以向用户发送错误消息

                html += '<form name="input" action="ingame.php?page=attack/travel/startbattle" enctype="multipart/form-data" method="post">';
                html += '<input type="hidden" id="goid" name="goid" value="'+res.id+'">';
                html += '<input type="hidden" id="level" name="level" value="'+res.level+'">';
                html += '    <input type="submit" value="Battle!" class="button"/>';
                html += '</form>';
html+='';
html+='';
html+='';
html+='';
html+='';

您无法阻止用户向表单端点提交他们喜欢的任何参数。即使您可以以某种方式阻止表单值的更改,也可以使用
curl
或类似的方法向服务器发送定制的请求


您需要对输入值进行服务器端验证。您可能需要存储一个在提交表单时可以检索的中间对象,这样您就不必将这些值作为隐藏字段携带。

如果您想存储可以信任的变量,那么就不要将它们发送给客户端,而只将它们保存在服务器内存中(使用会话状态、数据库或在请求之间持续存在的其他支持存储)

如果您需要与客户端共享值,则将其发送出去,但不要接受用户的输入


作为第三种选择,如果您有一个完全无状态的服务器,并且需要向客户端公开值,那么您可以对这些值进行加密和/或签名,这样当这些值从客户端返回时,您就可以验证它们是否未被篡改。使用消息身份验证代码就是这种方法的一种实现:

通过会话或类似的方式在服务器端进行检查。为特定用户随机生成唯一哈希