首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解决方案:选择输入,下拉防篡改

解决方案:选择输入,下拉防篡改
EN

Stack Overflow用户
提问于 2013-08-26 07:31:33
回答 3查看 702关注 0票数 0

对于隐藏字段篡改保护: Id,RowVersion,我使用Adam Tuliper AntiModelInjection的一个版本。

我目前正在研究一种方法来防止在选择列表/下拉列表中发现的有效选项被篡改。考虑一个多租户共享数据库解决方案,其中fk不够安全,并且选项在级联下拉菜单中进行动态过滤。

在过去的ASP.NET webforms时代,视图状态可以免费添加防篡改功能。在ajax时代,select列表防篡改是如何实现的?有没有一种通用的解决方案,通过比较散列而不是从数据库中重新获取选项值并手动比较?

Is ViewState relevant in ASP.NET MVC?

EN

回答 3

Stack Overflow用户

发布于 2013-08-27 00:43:49

如果可以,这里的唯一解决方案是根据当前用户If对该数据的权限进行筛选,然后在保存时再次验证这些权限。

如果这是不可能的(服务器端有多种方法来实现这一点,比如通过记录中的CustomerId fk,到在服务器端添加临时安全缓存,等等),那么客户端的值可以提供一个额外的选项。

如果提供了客户端选项,就像对Web表单所做的那样,那么可以考虑基于它们的a。)用户id加上另一个密钥b。)SessionId (session必须提前建立,否则每个请求的session ids可能会改变,直到session对象中存储的值建立session。c.)其他一些不同的值

HTTPS在这里非常重要,所以这些值不会被嗅探到。此外,理想情况下,您希望每个页面都是唯一的。这可能是上面A中的第二个关键字。为什么?我们不希望攻击者想出一种方法,在你的web应用程序的其他地方创建新的记录,并且能够找出1,2,3,4,5,6等的散列或加密值,并本质上创建一个彩虹值表来伪造。

票数 1
EN

Stack Overflow用户

发布于 2013-08-26 08:13:07

Leblanc,根据我的经验,客户端验证主要是为了方便用户。不需要发帖,然后才会发现有问题。

最终的验证需要在服务器端进行,而不是操作HTML。普通用户不会继续使用选择列表和下拉列表。这是由试图破坏您的页面或非法访问数据的人所做的。我想我的观点是,最终的安全性需要存在于服务器中,而不是客户端。

票数 0
EN

Stack Overflow用户

发布于 2013-08-26 11:21:48

我认为在一些假设的情况下,可以创建一个全局解决方案。在我构建任何东西之前,我想提出一个开放的解决方案,看看是否有人可以找到缺陷或潜在问题。

给定所有下拉列表,远程检索它们的数据。+在ajax时代和级联盒中,这现在更常见。(我们使用kendo dropdowns。)

代码语言:javascript
运行
复制
public SelectList GetLocations(int dependantarg);

SelectList将作为json返回-但在让newtonsoft序列化转换器自动注入之前:(在全局级别完成)

  1. EncryptedAndSigned属性设置为json。此属性将包含包含所有有效值的完整SelectList的序列化版本,该值也是json的encrypted.
  2. EncryptedName属性。此属性将具有控制器actionname -在本例中,EncryptedName值将为"GetLocations"

当创建http post时,还必须在post中发送EncryptedName : EncryptedAndSigned。对于这个JSON帖子示例,它将是:

代码语言:javascript
运行
复制
{
 Location_Id: 4,
 GetLocations: 'EncryptedAndSigned value'
}

在服务器端:

代码语言:javascript
运行
复制
 [ValidateOptionInjection("GetLocations","Location_Id")
 public ActionResult Update(Case case)
 {
    //access case.Location_Id safety knowing that this was a valid option available to the user.
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18434772

复制
相关文章

相似问题

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