使用Web控件的属性集合来存储额外数据是否安全?
e.g。
DropDownList ddl = new DropDownList();
ddl.Attributes.Add("ExtraData", "SomeData");
答案 0 :(得分:2)
我建议反对它,因为这些属性可能容易被篡改。相反,您应该在服务器上有一个对象列表,其中每个对象都存储下拉文本数据以及其中的额外数据。
然后,您可以使用下拉列表的索引来确定选择服务器列表中的哪个对象。通常,前端控件除了显示数据和索引之外不应包含任何内容(如果可以提供帮助)。这就是数据网格具有数据索引列的原因,因此您可以检索与该行对应的记录的索引。记录本身不存储在网格中,只显示其字段。
答案 1 :(得分:1)
它(很可能)安全地到达浏览器,但一切都可以在那里改变。因此,除非您正确签名,否则无法依赖从浏览器返回的任何内容,例如用你的数据哈希+秘密。
有类似的东西:
HASH_FUNCTION(DATA + SECRET), DATA
如果有人篡改了您的数据,您可以在服务器上查看。
答案 2 :(得分:0)
是的!但是,只有当您的数据不敏感时,如果客户端篡改它并不重要。 HTML 5正式承认将data- *属性用于通用数据。请注意,data- *属性主要用于客户端的东西;它们也可以用于服务器端。但请记住,只存储非敏感数据。
我个人在asp.net中使用了data- *属性来简化客户端显示链接/按钮(例如删除)按钮的警告消息的过程。然后,可以根据需要通过访问Attributes集合中的相应data- *属性来更改服务器端的消息。如果客户端篡改了这些属性,则只会伤害客户端,因为他们可能无法收到警告消息。