首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >淘汰JS安全建议/开发工具

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

Stack Overflow用户
提问于 2018-04-08 13:44:27
回答 1查看 87关注 0票数 0

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

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

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

代码语言:javascript
复制
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玩的时候我打字了

代码语言:javascript
复制
myFunction2ViewModel.data.PrimaryKeyId(99999999999)

并对调用服务器的浏览器进行了更改,该服务器将我编辑的主键发送到服务器。

我的问题是你怎么防止这样的事情发生?我正在运行检查,以查看正在编辑的对象是否允许进行编辑,但理论上,我必须检查返回到服务器的每个属性,看看它们是否可以编辑。我的一些模型相当复杂,有大量的数据。

如有任何意见或评论,将不胜感激。

谢谢

詹姆斯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-08 13:57:16

这个问题与Knockoutjs毫无关系。

你不能相信客户。句号。

您从客户端收到的任何请求都必须经过授权,而不管您在客户端有什么样的封装。因为即使您可以防止通过devtools访问这些变量,人们也可以很容易地直接访问您的api并发送他们想要的任何请求。

因此,是的,您必须检查进入服务器的每个属性(如果您具有属性级粒度授权)。如果您还没有建立基于角色的分层授权库,那么您可能需要考虑在后端集成一个基于角色的分层授权库。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49718497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档