Javascript 保护ajax形式的inspect元素的值,如何保护?

Javascript 保护ajax形式的inspect元素的值,如何保护?,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,如何保护我的ajax形式的inspect元素? 我正在创建一个系统,但我忘记了用户可以使用inspect元素编辑隐藏输入的值 请查看此代码: <input type="hidden" class="id" value="<?=$array["id"]?>" /> 如果id为5并且我编辑为2,ajax将获得2 有人能帮我吗?你就是帮不了。您永远不能假设从客户端发送的数据是可信的。这就是为什么您应该始终检查服务器上的输入。在客户机上检查它只是提高效率的额外措施。这永远不是一

如何保护我的ajax形式的inspect元素? 我正在创建一个系统,但我忘记了用户可以使用inspect元素编辑隐藏输入的值

请查看此代码:

<input type="hidden" class="id" value="<?=$array["id"]?>" />
如果id为5并且我编辑为2,ajax将获得2


有人能帮我吗?

你就是帮不了。您永远不能假设从客户端发送的数据是可信的。这就是为什么您应该始终检查服务器上的输入。在客户机上检查它只是提高效率的额外措施。这永远不是一个替代方案,也不应该是唯一的安全措施

但是,作为一种额外的安全措施。您可以添加第二个字段,其中包含隐藏字段的散列值(当然是盐渍的,否则就没有意义了)。然后在服务器上检查该值是否仍然与散列匹配(再次使用相同的salt值进行散列)

但你也不应该太相信这一点

<input type="hidden" name="id" class="id" value="<?=$array["id"];?>" />
<input type="hidden" name="hash" class="id" value="<?=md5($array["id"] . "somerandomstring");?>" />
当您通过AJAX从客户机接收id和散列值时,只需检查再次使用相同的salt值散列id是否会产生相同的散列。如果不是,那就意味着他换了身份证

但是您仍然应该检查是否允许用户使用此id处理该项。并且您可能应该使用sha而不是md5,因为md5非常不安全

盐必须是秘密的,而且在两个地方都是一样的。“salt”值是一段随机代码,添加到要散列的值中,因此黑客很难根据散列强制执行原始值(但并非不可能)


再加上几分钟的超时时间,可能就足够安全了

这是成为黑客的开始。当然,你可以使用各种工具,比如UglifyJS来“丑化”你的代码,但仅此而已。对此你无能为力。你唯一能做的就是进行服务器端验证。我在学习编程,所以我采用了这种方法。你能告诉我如何发送一些到我的ajax代码中吗?我可以使用session,但我不久就会使用这个html代码(php)。我用一种方式编辑了我的答案,您仍然可以在客户端验证它。但是我仍然建议检查服务器端,如果用户拥有所需的权限。我看到了你的代码,thx,我也有这个想法,但是我如何检查服务器端(php)?(编辑):我想我现在明白了,我需要检查这个散列和php脚本中的id,对吗?第二部分是服务器端。当您通过AJAX从客户机接收id和散列值时,只需检查再次使用salt值散列id是否会产生相同的散列。如果没有,这意味着他改变了身份证。是的,我现在就做,我认为在我的网站上使用它是安全的。非常感谢你。
<input type="hidden" name="id" class="id" value="<?=$array["id"];?>" />
<input type="hidden" name="hash" class="id" value="<?=md5($array["id"] . "somerandomstring");?>" />
$id = $_GET["id"];
$hash = $_GET["hash"]
if(md5($id . "somerandomstring") == $hash) {
    // it's okay
} else { 
    // he changed it 
}