- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个多用户 ASP.NET MVC 应用程序。用户不应该看到彼此的数据或对彼此的数据进行任何操作。
我的 Controller 操作之一是强制性的 POST 到/Edit 以编辑记录(例如联系人)。现在这是我的问题:如果有人伪造一个简单的 POST 到/Edit(自动模型绑定(bind)到我的联系人类)并编辑其他人的信息怎么办?由于每条记录都由 Id 标识,因此所要做的就是使用 Id XXX 进行伪造的 POST,然后记录#XXX 将被攻击者提供的任何内容覆盖。我怎样才能阻止它?
我唯一想到的是首先从数据库中每次获取原始实例,检查它实际上在用户的可编辑对象范围内(他通常会看到的对象)编辑),并且仅当检查通过时才能继续 UpdateModel 并提交更新更改。
有没有更好的办法?
编辑:这不是跨站点/CSRF 攻击。另一个登录用户可以执行此操作。
最佳答案
View /页面的授权和特定对象的授权实际上是两个不同的概念。最好的方法是将 Authorize 属性与 ASP.NET 角色系统结合使用来授予或拒绝对给定页面的访问权限。一旦您验证了用户有权访问该页面,您就可以验证他是否拥有他所请求的对象的权限。我在我的应用程序中使用了这种方法,效果很好。通过首先使用 Authorize 筛选器,它显着提高了性能,因为实际的对象权限检查是一项繁重的操作。
另外,我使用自制的规则系统来实际设置和确定用户是否有权访问该对象。例如,在我的系统中,管理员可以完全访问每个对象。 (这是一条规则。)创建对象的用户拥有对该对象的完全访问权限(也由一条规则指定)。此外,用户的经理可以完全访问他的员工可以访问的所有内容(同样由规则指定。)然后我的应用程序评估对象以查看是否适用任何规则——首先从最不复杂的规则开始,然后移动最后介绍更复杂的规则。如果任何规则是肯定的,我将停止规则评估并退出函数。
关于c# - ASP.NET MVC : Verify that editing record is allowed (ownership),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1417248/
我想检查是否可以限制架构的所有权不被另一个角色继承。我有一个托管架构,它由角色A拥有(具有所有权特权)。角色B继承角色A,但我不希望角色B继承所有权特权。。这种设置在雪花中可能吗?也就是说,在这种情况
以下代码: public string add_button_tooltip_markup { get { return add_button.get_tooltip_markup (); }
我一直在研究 Cake 的 Auth/ACL 组件。我已经阅读了文档并完成了教程,但我仍然对我实际可以完成的事情不满意。我见过couple的other接近,但我不能说,因为我确实有一个直接的赢家。在我
对措辞表示歉意,我真的找不到其他方式来表达它。 我有一个像这样的历史表: id date from_id to_id 1 2010-01-01 A B 1
由于我的母语不是英语,所以我可能会遗漏一些东西,所以也许这里有人比我更了解。 取自WSASend MSDN 上的说明: lpBuffers [in] A pointer to an array of
我阅读了以下帖子 association owned by classifier and association owned by relationship in UML Setting the as
仍在寻找解决方案 (2/24/16) 我的用户模型与组之间存在 has_many :through 关系。所以用户有很多组,组有很多用户,但我也想由一个用户建立组的所有权,他可以做出最终的决定。 这个
我正在编写一个小的 Java 程序,它应该运行一个外部程序将图像复制到系统剪贴板(即 Windows 7“截图工具”),等待它完成,将图像从剪贴板保存到磁盘并将 URL(可以从中访问图像)复制到剪贴板
我在图形应用程序上工作,并且一直在使用共享指针和唯一指针,主要是因为它为我处理内存重新分配(又名方便),这可能很糟糕(如果这就是我使用它们的原因)。 我最近在 Stackoverflow 上阅读了一个
我对 Android 11 中的存储更改有疑问。如果我理解正确,应用程序可以读取/写入/删除它创建的文件。我也可以像这样访问这些文件: File path = new File(Environment
谁能帮我澄清一下QML Repeater docs意思是首先说 “Items instantiated by the Repeater are inserted, in order, as child
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我有一个方法将间接指针作为参数,如果有错误,则将其设置为错误对象。我正在尝试打开尽可能多的警告。但其中之一 - Implicit ownership types on out parameters -
我正在使用 Boost.Python 向 python 公开一个 C++ 树类。节点类持有子节点列表并提供方法 void add_child(Node *node) Node 类获取提供的 Node
基于 this Stroustrup 建议“函数中的指针不应表示所有权” 问题> 有人可以给我一些详细的解释吗?最好能举例说明。 谢谢 最佳答案 如果某个代码负责删除指针或将所有权转移给其他人,则该指
我正在尝试在 docker 容器中运行 postgresql,但当然我需要让我的数据库数据保持持久性,所以我尝试使用仅数据容器来公开卷以在此位置存储数据库。 所以,我的数据容器有这样的 Dockerf
我对string::assign方法的理解有些差距。考虑以下代码: char* c = new char[38]; strcpy(c, "All your base are belong to us!
我有一个基于 Ruby on Rails 的站点,我需要在其中运行 rake assets:precompile 以获得正确的预编译 Assets 。但是,每当我运行此命令时,我应用程序的 tmp 目
我已经设置了一个服务帐户来复制用户上传的文件。如何将所有权转移到不同的电子邮件地址? 我有: new_permission = {'value': 'me@example.com', 'type':
我一直在尝试包装 CPointer 类型的 native 对象,认为该对象控制底层 native 对象的生命周期。 在 C++ 术语中,我会做类似的事情: class T { private: U
我是一名优秀的程序员,十分优秀!