我正在开发一个同时使用 MVC 和 KnockoutJS 的项目,我想知道如何最好地为站点提供安全性。
这是我的问题。
我允许使用 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
};
}();
然后在我的点击处理程序中实例化所需的视图模型,一切都很好,效果很好!
我遇到的问题是我的 Razor 语法中有以下内容:
<li><a href="#" data-songid="@Model.Song.Id" class="icon-margin-left manage-song">Edit Song</a></li>
在我的点击处理程序中,我读取了 data-songid 值并使用敲除从服务器加载数据。这也很有效,但是,在 chrome、firebug 或任何数量的开发工具中更改 data-songid 值并不难。更改该值后,用户可以单击链接并编辑其他实体...:S
我有更好的方法吗?我非常担心这是我的应用程序中的一个巨大的安全漏洞。
提前致谢!