2010-04-22 41 views
0

我在我的ASP.NET页面中自动生成一个表单。这已经过测试和工作。我想知道是否:安全在ASP.NET控件ID中存储ID?

  1. 如果将数据库ID存储为控件ID的一部分存在任何安全问题?我可以看到有两个问题:id在页面源代码中可见(在这种情况下不是很重要),并且有人可能以某种方式更改控件的名称?第二种可能性更严重。这是一个潜在的问题,以及如何使其无效?

  2. 如果有一种更好的方法将独特的数据与任何类型的控件相关联?是否可以在控件的视图状态中存储自定义项目?

+0

请问为什么您需要将HTML元素的客户端ID与数据库ID关联? – 2010-04-22 20:31:45

回答

0

例如,您可以创建自己的自定义控件,从TextBox继承。创建在ViewState中存储数据的属性。这是我实现你所需结果的最快速和最简单的方法。

0

只是将它们保存在ViewState

viewstate["DB_ID"] = datarow("ID") 
0

您可以使用hiddenfield。或者最好的方法是在会话中存储您的ID。会议非常安全。

0

不存储任何与您的页面相关的数据库。你正在让人们了解你的系统应该隐藏起来。

如果您必须存储数据库ID,请将其存储在会话中或放入您的web.config文件中。

0

在页面中使用数据库ID没有任何问题。只要看看这个页面的URL或几乎任何其他MVC风格的网站。除非您的系统容易受到SQL注入攻击,否则它本身不是安全风险 - 如果是这样,那么您就有更大的问题需要担心。