2009-09-06 29 views
3

我目前正在用ADO.NET实体框架在ASP.NET MVC中构建一个非常小的/简单的Web应用程序。我在墙上做了一个数据库中的一条记录的编辑,我必须在html内包含唯一的id(主键)作为隐藏字段。这是基于我在这里问了一个问题的One Possible Solution根据网页中的隐藏字段编辑数据库记录有哪些安全风险?

恐怕这可能会打开我的数据库,供其他人编辑该表的其他记录。

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

回答

1

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

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

0

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

-1

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

继续,我会说。

善良,

1

不,这是你要照顾的东西。但是,这是不是一个真正的“secruity”的问题,如果你检查用户的权限

  • 他看到的View首次
  • 和数据库更新之前被调用

“黑客之前“然后仍然可以将隐藏字段”X的ID“编辑为”Y的ID“。如果他不能编辑“Y”,检查应该禁止。如果他最初可以编辑Y,他可以声称“我通过使用Y的视图来更改X,尽管我也可以使用他对X的观点”。

1

正如其他人所说,物品ID本身并不具有安全风险。

但是,如上所述,为了回答您的问题,隐藏字段带来与可见字段相同的安全风险。

1

来自webforms我在想和你一样的事情。您总是需要构建一些服务器端代码来检查编辑和删除。我遇到的问题是用户只能通过更改源代码来删除其他用户的项目。为了防止它,我只需要检查用户是否删除了属于他的物品。

0

我的建议是使用uid,这是一个记录的唯一32位唯一标识号。所以你的数据库会被保护,因为如果用户在隐藏字段中看到uuid。他不能猜测该表的其他ID,因为它们是唯一的和随机的