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
これを行うためのより良い方法はありますか?これが私のアプリケーションの巨大なセキュリティ ホールであることを非常に懸念しています。
前もって感謝します!