我是 asp.net mvc 的完全初学者,坦率地说也是编码方面的初学者。我正在创建我的第一个 MVC 应用程序。我设置了一个 asp.net 身份系统,它工作得很好。我的 Controller 中有一些操作方法,我希望登录用户提供一个序列号(14 个字母数字字母)以便获得执行某些任务的授权。我已经阅读了大量关于自定义 AuthorizeAttribute
的文章,但我没有提出解决方案,而是让它变得更加困难。
这些序列号应该保存在应用程序的某个地方,也许在后端数据库中。想要访问特定操作方法的用户应提供序列号。 整个场景就像许可软件或防病毒软件。任何现实的例子或具体的教程都会有很大帮助。
谢谢
最佳答案
正如 OP 所要求的,例如散列,我将扩展主题。当我们谈到网络安全时,首先想到的是哈希。 什么是散列?散列是数据编码的一种方式。例如你有一个密码,你会如何保护它?您对其进行哈希处理并将其存储在数据库中。当用户第二次尝试登录时,您会将他的密码散列并存储在数据库中。现在他输入一个密码,你对其进行哈希处理并查看它在数据库中是否匹配。
针对您的特定情况:
- 您可能想要访问包含散列序列键值的存储。
- 当用户输入一些序列 key 时,您使用相同的方法对其进行哈希处理(与用于哈希序列 key 的方法相同)。
- 在您的存储中查找与用户提供的值相匹配的内容。如果匹配,则用户已插入正确的序列号。
用盐散列的例子:
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 应用程序时,您必须先进行研究,然后才能确保安全。
关于c# - 如何根据字符串键(序列键)验证登录用户以在 asp.net mvc 中执行某些特定操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36848164/