防止Javascript变量更改&;从Chrome开发者工具注入

防止Javascript变量更改&;从Chrome开发者工具注入,javascript,jquery,ajax,asynchronous,xss,Javascript,Jquery,Ajax,Asynchronous,Xss,我构建了一个javascript异步代码 <script> function sendVotes() { //some variables here that collects the number of votes a user input var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if

我构建了一个javascript异步代码

    <script>



function sendVotes() {
        //some variables here that collects the number of votes a user input 
          var xhttp = new XMLHttpRequest();
          xhttp.onreadystatechange = function() {
          if (this.readyState == 4 && this.status == 200) {
            
          }
          };
          xhttp.open("POST", "async/vote", true);
          xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
          xhttp.send("id="+id+"&votes=" =votes);
         }
          </script>

函数sendVotes(){
//此处的一些变量用于收集用户输入的投票数
var xhttp=newXMLHttpRequest();
xhttp.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
}
};
xhttp.open(“POST”,“异步/投票”,true);
setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
xhttp.send(“id=“+id+”&投票=“=投票”);
}
我试用了chrome调试工具,我注意到当脚本在运行时暂停时,可以更改变量并指定新值,例如上面的示例代码中的投票数


有没有办法检测变量的值是否发生了变化,或者有没有办法完全防止这种情况发生

我不确定我是否理解这个问题@tibebs.m-你能澄清一下这个问题是关于什么的吗?哦,等等,我现在明白了。你是对的-收回我的voteYou不能阻止有经验的用户从开发工具更改变量-你还必须在服务器上验证请求参数,并且作为一项规则-你永远不应该信任来自userAlon Eitan的输入。谢谢,但如果我集成了一个支付网关,在支付网关处理支付(比如$1000)之后,金额会传递给一个javascript变量,然后我们通过ajax发送支付的金额。在这种情况下,amount_变量的值可以在支付成功后通过调试更改为$30000,然后发送到服务器以输入数据库。在这种情况下,无法在服务器端验证实际支付了多少,因为值是通过javascript和ajax发送到服务器的。这就是为什么一些(如果不是全部)支付提供商允许您在服务器上设置金额的原因,请参见示例