Asp.net mvc 3 GUI作为下拉列表中的值字段,有更好的方法吗?

Asp.net mvc 3 GUI作为下拉列表中的值字段,有更好的方法吗?,asp.net-mvc-3,security,razor,Asp.net Mvc 3,Security,Razor,我在SQL Server数据库中有一个Products表,它有一个包含uniqueidentifiers的ID列,还有一个带有VARCHAR(100)的ProductName列。此表包含5000多个条目 现在在我的razor cshtml页面上,我有一个下拉列表,显示这些pProduct名称。我的做法是将下拉值字段绑定到ID列,并将文本显示到ProductName。这意味着在客户端,如果有人在浏览器中查看源代码(或使用任何http嗅探器等),他们可以看到与这些产品名称关联的所有GUI。现在,当用

我在SQL Server数据库中有一个Products表,它有一个包含uniqueidentifiers的ID列,还有一个带有VARCHAR(100)的ProductName列。此表包含5000多个条目

现在在我的razor cshtml页面上,我有一个下拉列表,显示这些pProduct名称。我的做法是将下拉值字段绑定到ID列,并将文本显示到ProductName。这意味着在客户端,如果有人在浏览器中查看源代码(或使用任何http嗅探器等),他们可以看到与这些产品名称关联的所有GUI。现在,当用户提交此信息时,我已经设置了一个服务器端验证,确保所有提交的guid都是正确的 1) 有效的GUID(不是字符串或其他任何东西) 2) 提交的Guid存在于产品中的ID中。这将确保不会处理Products.ID中不存在的任何Guid


用户可以看到此GUID数据,这是否会暴露任何安全风险?有没有更好的方法来处理这种情况

假设您的数据库有外键,这不会导致安全漏洞。即使它没有外键(在产品表和产品订单之间),您也可以首先查找产品。如果它不存在,则忽略该请求


因此,不,这不是一个安全漏洞-除非.NET framework的Guid解析中存在安全漏洞。

是的,我有一个FK。我的一位同事认为这是一个安全漏洞。虽然对我来说,即使我有0,1,2这样的值用于绑定下拉列表的值,但这与直接绑定到guid没有太大区别。感谢您的回复。这不是一个安全漏洞,它只会破坏您的购物篮功能和/或结帐。由于guid无效,他们将无法在服务器上执行任何代码-MVC将对此负责。