Asp.net 依靠网页中的隐藏字段编辑数据库记录有哪些安全风险?

Asp.net 依靠网页中的隐藏字段编辑数据库记录有哪些安全风险?,asp.net,asp.net-mvc,ado.net,Asp.net,Asp.net Mvc,Ado.net,我目前正在用ASP.NET MVC和ADO.NET实体框架构建一个非常小/简单的web应用程序。我在编辑数据库中的一条记录时撞到了墙上,我必须在html中包含唯一id(主键)作为隐藏字段。这是基于我在这里提出的一个问题 我担心这可能会打开我的数据库,让其他人编辑该表的其他记录 MVC会在内部处理此安全风险吗?隐藏字段通常用于包含用于编辑的ID。只需检查以确保当服务器端收到帖子时,允许用户编辑有问题的行。MVC框架将不会在隐藏字段后清除。你的ID不是一个巨大的风险,拥有像删除链接这样的东西将是一个

我目前正在用ASP.NET MVC和ADO.NET实体框架构建一个非常小/简单的web应用程序。我在编辑数据库中的一条记录时撞到了墙上,我必须在html中包含唯一id(主键)作为隐藏字段。这是基于我在这里提出的一个问题

我担心这可能会打开我的数据库,让其他人编辑该表的其他记录


MVC会在内部处理此安全风险吗?

隐藏字段通常用于包含用于编辑的ID。只需检查以确保当服务器端收到帖子时,允许用户编辑有问题的行。

MVC框架将不会在隐藏字段后清除。你的ID不是一个巨大的风险,拥有像删除链接这样的东西将是一个巨大的风险

我想说,继续吧

善良


不,这是你必须注意的事情。但是如果你检查用户的权限,这并不是一个真正的“安全”问题

  • 在他第一次看到风景之前
  • 在调用数据库更新之前

“黑客”仍然可以将隐藏字段“X的id”编辑为“Y的id”。如果他不能编辑“Y”,检查应该禁止这样做。如果他一开始可以编辑Y,他可以声称“我使用Y的视图更改了X-尽管我也可以使用X的视图”。

正如其他人所说,项目ID本身并不存在安全风险


但是要回答您的问题,如上所述,隐藏字段与可见字段具有相同的安全风险。

无论您使用何种服务器端技术,篡改ID都可能发生在客户端。正如其他人所建议的,可以使用某种形式的身份验证/授权方案在用户操作之前检查权限


如果不将ID转发回服务器以供操作使用,则无法将用户操作与服务器代码绑定。

来自webforms我的想法与您的想法相同。您总是需要内置一些服务器端代码来检查“编辑”和“删除”。我遇到的问题是,用户只需更改源代码就可以从其他用户删除项目。为了防止它,我只需检查用户是否正在删除属于他的项目。

我的建议是使用uid,它是记录的唯一32位唯一标识号。所以您的数据库受到保护,因为如果用户在隐藏字段中看到uuid。他猜不出该表的另一个id,因为它们是唯一的和随机的