我在我的 ASP.NET 页面中自动生成一个表单。这已经过测试和工作。我想知道是否:
如果将数据库 ID 作为我的控件 ID 的一部分存储有任何安全问题?我可以想到 2 个问题: id 将在页面源中可见(在这种情况下并不重要),以及有人可能以某种方式更改控件的名称?这第二种可能性更为严重。这是一个潜在的问题吗?如何消除它?
如果有更好的方法将唯一数据与任何类型的控件相关联?是否可以在控件的视图状态中存储自定义项?
我在我的 ASP.NET 页面中自动生成一个表单。这已经过测试和工作。我想知道是否:
如果将数据库 ID 作为我的控件 ID 的一部分存储有任何安全问题?我可以想到 2 个问题: id 将在页面源中可见(在这种情况下并不重要),以及有人可能以某种方式更改控件的名称?这第二种可能性更为严重。这是一个潜在的问题吗?如何消除它?
如果有更好的方法将唯一数据与任何类型的控件相关联?是否可以在控件的视图状态中存储自定义项?
不要在您的页面中存储任何与数据库相关的内容。您正在向人们提供应该隐藏在视野之外的系统知识。
如果您必须存储数据库 ID,请将其存储在会话中或将其放入您的 web.config 文件中。
例如,您可以创建自己的自定义控件,从 TextBox 继承。创建在 ViewState 中存储数据的属性。这是我达到您需要的结果的最快和最简单的方法。
只需将它们保存在视图状态中
viewstate["DB_ID"] = datarow("ID")
您可以使用隐藏字段。或者最好的方法是将您的 ID 存储在 Session 中。会话真的很安全。
在页面中使用数据库 ID 没有任何问题。只需查看此页面或几乎任何其他 MVC 样式站点的 URL。它本身不是安全风险,除非您的系统容易受到 SQL 注入攻击 - 如果是,那么您需要担心更大的问题。