【发布时间】:2021-03-25 02:23:36
【问题描述】:
我两天前开始学习 c#,所以我对 .net 框架没有太多经验。我想创建一个应用程序,用户可以在其中输入用户名/密码组合,并将登录信息发送到服务器进行验证。我想通过使用 PHP 脚本以下列方式执行此操作,但它并不是真正有效/安全,因为每个人都可以访问该脚本。
1) 客户端->从用户那里获取用户名/密码并将用户名发送到服务器
2) server->判断用户是否在数据库中,发回一个随机数
3) 客户端->用数字创建一个MD5哈希然后用密码MD5+数字MD5\创建一个MD5,并用数字将它发送回服务器
4) server->从numberHash+passwordHash中创建和MD5 hash并比较客户端收到的hash
上述身份验证的另一个问题是,我想在用户登录后定期检查用户是否有权访问应用程序,并且我不想每次用户想要时都向网站询问数字访问应用程序中的某些内容。我做了一些研究,发现了 JWT 身份验证,但我现在遇到的问题是以有效的方式实现 JWT 身份验证。如果用户登录应用程序,它会将用户名/密码发送到服务器,但向服务器发送纯密码似乎并不安全。我还希望令牌在创建后有时间限制。我正在考虑为过期令牌创建一个新数据库,为有效令牌创建另一个数据库,并在每次用户尝试从站点访问信息时检查这些数据库。我打算用 asp.net 核心实现某种 API,但我发现我当前使用的主机不支持 .net。现在我正在考虑使用服务器(可能是天蓝色,但我不熟悉它)仅用于生成密钥,当客户端尝试联系我的网站时,我检查密钥是否存在于无效密钥数据库中并阻止连接否则,如果它不在有效的密钥数据库中,则插入它。
我的问题:
1) 除了上述方法之外,我还有更好的方法来实现这一点。
2) 如果不是,那么检查密钥以让客户访问网站数据库的最佳方法是什么。
【问题讨论】: