我是MVC的新手,我对保持MVC应用安全感兴趣。例如,我关注的一个方面是批准页面,可用于批准要审核的项目。问题是某些用户只能批准某些项目。批准应用程序时,将批准的项目的ID发布到控制器中的ApproveItem ActionResult。问题在于理论上(例如使用FireBug)有人可能会将随机ID发布到此ApproveItem控制器(包括他们可能不允许批准的项目)。而不是试图在过滤中捕获这样的每个问题,为什么不使用GUID作为ID?然后,我几乎100%确定用户只批准他们可以批准的项目。
在这种情况下,你们有什么用于安全的?在我看来,GUID将是最简单的。你觉得怎么样?
答案 0 :(得分:1)
你的问题(或至少是瓷砖)并没有多大意义。您可以在安全系统中使用Guids作为全局唯一标识符,但不应将它们用作安全系统。
@ePezhman提到潜在的Insecure Direct Object Reference vulnerability,但如果您正确验证用户的操作,则不会出现问题。
您的建议是Security through obscurity。你的应用程序实际上并不安全,猜测一些顽皮的输入真的很难。您应该做的是您要避免的并验证当前用户是否具有在实体上执行操作所需的权限。也就是说,是否允许用户批准该项目?如果不是,您应该显示错误消息或采取其他适当的操作(记录尝试,通知管理员等?)。
答案 1 :(得分:-1)
我认为,当您传递重要表的记录的ID时,例如您的用户数据,以及通过GET和URL传递数据时
答案 2 :(得分:-1)
GUID将是实现这一目标的最简单方法。 否则你可以选择#34; person -roles"批准您的项目的级别安全性。