Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 淘汰JS安全建议/开发工具_Javascript_Security_Knockout.js_Devtools - Fatal编程技术网

Javascript 淘汰JS安全建议/开发工具

Javascript 淘汰JS安全建议/开发工具,javascript,security,knockout.js,devtools,Javascript,Security,Knockout.js,Devtools,我有一个MVC/SPA应用程序,其中有许多敲除函数,所有这些函数都分配了变量,因此可以从其他函数调用它们。因此,当有人更新某个内容时,它会调用页面上的其他内容(如果有),并调用服务器 数据库中的所有主键都是整数 数据和模型来自MVC页面模型,该模型被转换为JSON并使用fromJSON实用程序进行映射 var myFunction1ViewModel; var myFunction2ViewModel; var Function1ViewModel = function () { va

我有一个MVC/SPA应用程序,其中有许多敲除函数,所有这些函数都分配了变量,因此可以从其他函数调用它们。因此,当有人更新某个内容时,它会调用页面上的其他内容(如果有),并调用服务器

数据库中的所有主键都是整数

数据和模型来自MVC页面模型,该模型被转换为JSON并使用fromJSON实用程序进行映射

var myFunction1ViewModel;
var myFunction2ViewModel;

var Function1ViewModel = function () {
    var self = this;
    self.data= ko.mapping.fromJSON($("#serverData1").val());
    self.doSomething = function(){
       //call server;

       if(typeof myFunction2ViewModel != 'undefined'){
         myFunction2ViewModel.doSomethingElse();
       }
    }
};

var Function2ViewModel = function () {
    var self = this;
    self.data= ko.mapping.fromJSON($("#serverData2").val());
    self.doSomethingElse = function(){
        //call server;
    }
};

function initFunction1() {

    myFunction1ViewModel= new Function1ViewModel();
    ko.cleanNode($('.panel-content')[0]);
    ko.applyBindings(myFunction1ViewModel, $('.panel-content')[0]);


}

function initFunction2() {

    myFunction2ViewModel= new Function2ViewModel();
    ko.cleanNode($('.panel-content2')[0]);
    ko.applyBindings(myFunction2ViewModel, $('.panel-content2')[0]);

}


$(document).ready(function(){
    initFunction1();
    initFunction2(); 
})
在devtools中玩的时候,我输入了

myFunction2ViewModel.data.PrimaryKeyId(99999999999)
并在调用服务器的浏览器中进行了更改,该服务器将我编辑的主键发送到服务器

我的问题是你如何防止类似的事情?我正在运行检查,以查看此人正在编辑的对象是否允许编辑,但理论上,我必须检查返回服务器的每个属性,以查看其是否可以编辑。我的一些模型非常复杂,有很多数据

如有任何想法或意见,将不胜感激

谢谢


詹姆斯

这个问题真的与淘汰赛无关

你不能信任客户。句号

您从客户机收到的任何请求都必须经过授权,而不管您在客户机端采用何种封装方式。因为即使您可以阻止通过devtools访问这些变量,人们也可以轻松地直接访问您的api并发送他们想要的任何请求

因此,是的,您必须检查服务器的每个属性(如果您具有属性级别的细粒度授权)。您可能想考虑投资时间集成一个基于角色的层次化授权库在您的后端,如果您还没有一个到位。p>