我正在使用MVC和KnockoutJS的项目,我想知道如何最好地为网站提供安全性。使用模型绑定敲除JS/MVC安全
这是我的问题。
我允许使用Razor创建视图,我使用Knockout通过JQuery对话框为许多功能提供动力。我有如下所示的主视图模型:
my.MasterViewModel = function() {
var
CatalogsViewModel = ko.observable(null)
BulkUploadViewModel = ko.observable(null),
ExploitationTypeViewModel = ko.observable(null),
ExploitationViewModel = ko.observable(null),
InviteSongWriterViewModel = ko.observable(null),
ManageCollaboratorsViewModel = ko.observable(null),
ManageSongwriterViewModel = ko.observable(null),
ManageSongViewModel = ko.observable(null),
ProViewModel = ko.observable(null),
SongsViewModel = ko.observable(null),
TagsViewModel = ko.observable(null),
TweaksViewModel = ko.observable(null),
NotificationsViewModel = ko.observable(new my.notificationsviewmodel());
return {
CatalogsViewModel: CatalogsViewModel,
BulkUploadViewModel: BulkUploadViewModel,
ExploitationTypeViewModel: ExploitationTypeViewModel,
ExploitationViewModel: ExploitationViewModel,
InviteSongWriterViewModel: InviteSongWriterViewModel,
ManageCollaboratorsViewModel: ManageCollaboratorsViewModel,
ManageSongwriterViewModel: ManageSongwriterViewModel,
ManageSongViewModel: ManageSongViewModel,
ProViewModel: ProViewModel,
SongsViewModel: SongsViewModel,
TagsViewModel: TagsViewModel,
TweaksViewModel: TweaksViewModel,
NotificationsViewModel: NotificationsViewModel
};
}();
在我的点击处理我然后实例化所需的视图模式,一切都很好,这个伟大的工程!
是我遇到的问题是,我有事情在我的剃刀语法如下:
<li><a href="#" data-songid="@Model.Song.Id" class="icon-margin-left manage-song">Edit Song</a></li>
在我的点击处理我读出的数据,songid值,并利用基因敲除从服务器加载数据。这也很好,但是,改变chrome,firebug或任何开发工具中的data-songid值并不是很难。一旦该值发生变化,用户就可以点击链接并编辑另一个实体...:S
有没有更好的方法可以做到这一点?我非常担心在我的应用程序中这是一个巨大的安全漏洞。
在此先感谢!
是的,我有安全构建在服务器端,但我不喜欢这是一切皆有可能。我想我必须忍受这样一个事实,即如果用户想要篡改他们自己的数据,那么这个用户就可以。 – mcottingham 2013-03-02 02:56:42