User interface 我是否应该出于任何原因允许超级管理员查看用户';通过用户界面输入密码?

User interface 我是否应该出于任何原因允许超级管理员查看用户';通过用户界面输入密码?,user-interface,permissions,admin,roles,User Interface,Permissions,Admin,Roles,目前,我正在开发一个具有3个角色的应用程序:1个用于客户,1个用于公司员工,另一个用于超级管理员 允许超级管理员用户通过UI查看/编辑用户密码是否是一种良好的做法?还是应该直接通过数据库进行修改 更新:我正在使用asp.net成员资格提供程序和MySQL。因此,数据库中有一个名为my_aspnet_membership的表,它存储两个字段:Password和PasswordKey。字段PasswordKey似乎是加密密码。但是,密码字段存储为纯文本。那么,有谁能告诉我,如果这不是一个好的实践,为

目前,我正在开发一个具有3个角色的应用程序:1个用于客户,1个用于公司员工,另一个用于超级管理员

允许超级管理员用户通过UI查看/编辑用户密码是否是一种良好的做法?还是应该直接通过数据库进行修改

更新:我正在使用asp.net成员资格提供程序和MySQL。因此,数据库中有一个名为my_aspnet_membership的表,它存储两个字段:Password和PasswordKey。字段PasswordKey似乎是加密密码。但是,密码字段存储为纯文本。那么,有谁能告诉我,如果这不是一个好的实践,为什么会这样设计?谢谢大家的回复

更新:对于询问密码是否真的存储在两个不同字段中的用户:


在任何情况下,都没有理由允许他人看到自己不拥有的密码


OP更新的更新:当然我不知道为什么你的DB设计成这样。乐观地看,它包含简单的密码,因此如果用户忘记了密码,可以将其邮寄给他们——这是一个糟糕的借口,但不幸的是,这是一个常见的借口。更好的选择是让系统向他们发送一个新生成的临时密码——该密码只允许设置永久密码(并且在发生更改之前不会破坏当前密码)。

在任何情况下,都没有理由允许某人看到他们不拥有的密码


OP更新的更新:当然我不知道为什么你的DB设计成这样。乐观地看,它包含简单的密码,因此如果用户忘记了密码,可以将其邮寄给他们——这是一个糟糕的借口,但不幸的是,这是一个常见的借口。一个更好的选择是让系统向他们发送一个新生成的临时密码——该密码只允许设置永久密码(并且在发生更改之前不会破坏当前密码)。

您的密码不应未加密地存储在数据库中,因此,用户界面或数据库的用户不应看到

至于它是否可以修改,当然可以

在这种情况下,应通过用户或管理员请求重新生成密码。同样,这应该在数据库中加密。我的首选是为用户自动生成新密码,而不是让管理员自己键入密码

有鉴于此,直接在数据库中更改密码的唯一方法是在插入之前先对密码进行加密。通过一个处理加密的UI可以更快地完成这项工作

更新

在回答更新时,您应该在web.config中指定对密码格式进行哈希处理:

<providers>
<add [...]
    passwordFormat="Hashed"
/>
</providers>


您的密码不应未加密地存储在数据库中,因此,用户界面或数据库的用户都不应看到密码

至于它是否可以修改,当然可以

在这种情况下,应通过用户或管理员请求重新生成密码。同样,这应该在数据库中加密。我的首选是为用户自动生成新密码,而不是让管理员自己键入密码

有鉴于此,直接在数据库中更改密码的唯一方法是在插入之前先对密码进行加密。通过一个处理加密的UI可以更快地完成这项工作

更新

在回答更新时,您应该在web.config中指定对密码格式进行哈希处理:

<providers>
<add [...]
    passwordFormat="Hashed"
/>
</providers>


您应该始终保存加密的密码。因此,您不可能向超级管理员显示其他用户的密码。

您应该始终保存加密的密码。因此,您不可能向superadmin显示另一个用户的密码。

您永远不应该像在任何数据库中那样存储密码。始终使用保存密码。

您永远不应该像在任何数据库中那样存储密码。始终使用a保存密码。

您应该保存在DB中加密的所有密码。。不是明文

您应该保存在DB中加密的所有密码。。不是明文

不应允许任何用户查看任何其他用户的明文密码。即使在数据库中也没有散列,密码也必须至少加密。 您可以允许超级管理员更改任何用户的密码,但禁止他以明文形式查看密码

编辑:您是否绝对确定密码字段以明文形式存储密码,而存在另一个passwordkey字段?因为,对我来说,这听起来像是一种“盐”机制。其中,密码首先使用一个密钥加密,然后使用passwordkey字段重新加密


编辑2:我现在几乎完全确定您的数据库使用的是一个附加密码。附加密码通常用于提高数据库的安全级别。有关salt的更多信息,请查看。

不应允许任何用户查看任何其他用户的明文密码。即使在数据库中也没有散列,密码也必须至少加密。 您可以允许超级管理员更改任何用户的密码,但禁止他以明文形式查看密码

编辑:您是否绝对确定密码字段以明文形式存储密码,而存在另一个passwordkey字段?因为,对我来说,这听起来像是一种“盐”机制。其中,密码首先使用一个密钥加密,然后使用passwordkey字段重新加密

编辑2:我现在几乎完全确定您的数据库使用的是一个附加密码。附加密码通常用于提高数据库的安全级别。更多信息