如何根据字符串键(序列键)验证登录用户以在 asp.net mvc 中执行某些特定操作?
How to validate a logged in user against string key (serial key) to carry out some specific actions in asp.net mvc?
我是 asp.net mvc 的完全初学者,坦率地说也是编码。我正在创建我的第一个 MVC 应用程序。我设置了 asp.net 身份系统,它工作正常。我的控制器中有一些操作方法,我希望登录用户提供一个序列号(14 个字母数字字母)以便获得执行某些任务的授权。我已经阅读了大量关于自定义的文章 AuthorizeAttribute
,但我没有提出解决方案,而是让它变得更加困难。
这些序列密钥应该保存在应用程序的某个地方,也许在后端数据库中。想要访问特定操作方法的用户应提供序列号。
整个场景就像许可软件或防病毒软件。任何现实的例子或具体的教程都会有很大帮助。
谢谢
您可以将序列号保存为会话变量。然而,这将意味着每次会话超时时,用户都必须为每个操作提供序列号。创建一个单独的数据库 table 来保存用户 ID 的序列密钥,以便根据经过验证的用户进行检查可能是更好的选择。
正如 OP 所要求的那样,我将扩展主题。当我们谈到网络安全时,首先想到的是哈希。
什么是散列?散列是数据编码的一种方式。例如你有一个密码,你会如何保护它?您对其进行哈希处理并将其存储在数据库中。当用户第二次尝试登录时,您会将他的密码散列并存储在数据库中。现在他输入密码,你对其进行哈希处理并查看它在数据库中是否匹配。
对于您的具体情况:
- 您可能想要访问包含散列序列键值的存储。
- 当用户输入一些序列密钥时,您使用相同的方法对其进行哈希处理(与用于哈希序列密钥的方法相同)。
- 在您的存储中查找与用户提供的值相匹配的值。如果匹配,则用户已插入正确的序列号。
用盐散列的例子:
static byte[] GenerateSaltedHash(byte[] plainText, byte[] salt)
{
HashAlgorithm algorithm = new SHA256Managed();
byte[] plainTextWithSaltBytes =
new byte[plainText.Length + salt.Length];
for (int i = 0; i < plainText.Length; i++)
{
plainTextWithSaltBytes[i] = plainText[i];
}
for (int i = 0; i < salt.Length; i++)
{
plainTextWithSaltBytes[plainText.Length + i] = salt[i];
}
return algorithm.ComputeHash(plainTextWithSaltBytes);
}
用于散列来自 MSDN, SO 的数据。
关于 hashing.
的文章
.NET hashing class for multiple times.
不幸的是,软件安全有很多问题。当涉及到 Web 应用程序时,您必须先进行研究才能确保安全。
我是 asp.net mvc 的完全初学者,坦率地说也是编码。我正在创建我的第一个 MVC 应用程序。我设置了 asp.net 身份系统,它工作正常。我的控制器中有一些操作方法,我希望登录用户提供一个序列号(14 个字母数字字母)以便获得执行某些任务的授权。我已经阅读了大量关于自定义的文章 AuthorizeAttribute
,但我没有提出解决方案,而是让它变得更加困难。
这些序列密钥应该保存在应用程序的某个地方,也许在后端数据库中。想要访问特定操作方法的用户应提供序列号。 整个场景就像许可软件或防病毒软件。任何现实的例子或具体的教程都会有很大帮助。
谢谢
您可以将序列号保存为会话变量。然而,这将意味着每次会话超时时,用户都必须为每个操作提供序列号。创建一个单独的数据库 table 来保存用户 ID 的序列密钥,以便根据经过验证的用户进行检查可能是更好的选择。
正如 OP 所要求的那样,我将扩展主题。当我们谈到网络安全时,首先想到的是哈希。 什么是散列?散列是数据编码的一种方式。例如你有一个密码,你会如何保护它?您对其进行哈希处理并将其存储在数据库中。当用户第二次尝试登录时,您会将他的密码散列并存储在数据库中。现在他输入密码,你对其进行哈希处理并查看它在数据库中是否匹配。
对于您的具体情况:
- 您可能想要访问包含散列序列键值的存储。
- 当用户输入一些序列密钥时,您使用相同的方法对其进行哈希处理(与用于哈希序列密钥的方法相同)。
- 在您的存储中查找与用户提供的值相匹配的值。如果匹配,则用户已插入正确的序列号。
用盐散列的例子:
static byte[] GenerateSaltedHash(byte[] plainText, byte[] salt)
{
HashAlgorithm algorithm = new SHA256Managed();
byte[] plainTextWithSaltBytes =
new byte[plainText.Length + salt.Length];
for (int i = 0; i < plainText.Length; i++)
{
plainTextWithSaltBytes[i] = plainText[i];
}
for (int i = 0; i < salt.Length; i++)
{
plainTextWithSaltBytes[plainText.Length + i] = salt[i];
}
return algorithm.ComputeHash(plainTextWithSaltBytes);
}
用于散列来自 MSDN, SO 的数据。 关于 hashing.
的文章.NET hashing class for multiple times.
不幸的是,软件安全有很多问题。当涉及到 Web 应用程序时,您必须先进行研究才能确保安全。