Javascript “如何加密或隐藏”;“价值”;在选择标记(HTML)的选项中-MVC 5
我正在将用户列表从控制器发送到视图 我的行动:Javascript “如何加密或隐藏”;“价值”;在选择标记(HTML)的选项中-MVC 5,javascript,html,encryption,asp.net-mvc-5,Javascript,Html,Encryption,Asp.net Mvc 5,我正在将用户列表从控制器发送到视图 我的行动: public ActionResult Users() { ViewBag.UserList = new SelectList(db.Users.ToList(), "Id", "UserName"); return View(); } 我正在用以下内容填充下拉列表: @Html.DropDownList("Users", (SelectList)ViewBag.UserList, "Select
public ActionResult Users()
{
ViewBag.UserList = new SelectList(db.Users.ToList(), "Id", "UserName");
return View();
}
我正在用以下内容填充下拉列表:
@Html.DropDownList("Users", (SelectList)ViewBag.UserList, "Select Users", new { @class = "required form-control" })
当我在chrome中打开developer tool时,我看到如下选项值:
<select class="required form-control" id="User_UserRole" name="Users" type="hidden">
<option value="">Select User</option>
<option value="3aeca037-99d1-4cb2-a08c-6a5a3427f35c">admin</option>
<option value="3df4ebc6-f7ee-44b9-9f0b-2083e5921aac">superadmin</option>
</select>
选择用户
管理
超级管理员
如何加密或隐藏此选项值
“value=“3aeca037-99d1-4cb2-a08c-6a5a3427f35c”
请帮助!在浏览器中发生的任何事情都不能被认为是安全的或隐藏的 你想要的根本不可能 任何对安全敏感的操作都需要在服务器上进行。如果您想让用户在“管理员”和“超级管理员”之间进行选择,只需在下拉列表中为他们提供这些选项,然后在他们提交表单时,使用服务器端代码来决定您要做什么 如果不想让他们看到一个或多个选项,请不要为不想显示的项目生成
标记
此外,确保您不允许基于用户输入的服务器端的无效选项。例如,如果您只想允许“admin”,请确保如果他们手动创建“superadmin”选项并提交,您在服务器端拒绝此选项
来自外部世界的任何东西都不可信。这样做可以隐藏选项值
<option value="k" style="display:none;">kumar</option>
库马尔
你到底为什么要这么做。你凭什么认为这与安全或使用安全有关(而且它已经是一个毫无意义的
Guid
)除非他在服务器端构建一些指向Guid的字典/链接,以便在回发过程中重新链接到Guid。正如其他用户所评论的,它不会提供额外的安全性,因为您在值上呈现的内容都会被代码理解,所以您只需更改值的显示,但其内部值保持不变,但是如果y您仍然希望实现这一点您可以使用tagbuilder和自定义属性来加密和解密值,我不确定它将如何提高安全性,如果您有用例,请告诉我。这隐藏了
本身(这是毫无意义的),而不是值(除非省略,否则无法完成-这也将使其变得毫无意义)感谢shankar的评论,但@StephenMuecke是正确的,因为我不想在选项中透露值,我认为这是不可能的!