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