如何启用用户从唯一一台计算机(通过获取CPU Serial)登录到ASP.NE
场景:
我有Web部署的ASP.NET-MVC 5应用程序与个人用户帐户:Identity 2.x.每个用户都有一个电子邮件和密码通过浏览器登录Web应用程序,这意味着用户可以通过任何设备使用Internet浏览器进行登录. 我想在每次登录时使用完全相同的PC类机器的情况下启用用户登录. 我可以礼貌地要求用户在必要时运行任何桌面.NET(.exe)应用程序.我还可以要求用户使用Chrome浏览器,如果插件是必要的话.直译我可以承担任何事情.解决方案可能会非常不舒服,这很好. 我的半解决方案: >通过桌面获取CPU序列号(让我们称之为Authorizer.exe)应用程序,该应用程序将此唯一ID发送到ASP.NET-MVC Web应用程序,同时登录它以授权该用户使用某台PC. Authorizer.exe会通过嗅探通过网络传输的数据包来检测登录到Web应用程序. 为什么我问这个问题: 如果有人窃取用户的电子邮件和密码,我不想让小偷能够登录,但对我来说最重要的是我不希望让用户从不同的设备登录. 解决方法
我能想到的唯一解决方案是发布客户端证书,并在您的应用程序中使用证书身份验证.
管理证书 要管理证书,您需要实施PKI,这需要: >获取颁发证书所需的证书颁发机构(可以是公共CA,也可以使用自签名证书) 确保用户无法将证书移动到其他计算机 薄弱环节是最后一个.您必须注意如何安装以及如何颁发证书. 在用户的浏览器上安装证书 在浏览器中安装证书.您可以: >创建一个证书文件,用于在浏览器中导入证书 注意:在这两种情况下,您都必须接受请求并颁发证书或拒绝它.证书不会自动发放 第一个选项有一个问题:如果您将证书发送给您的用户,他将能够在任何机器上安装任何次数.要解决此问题,您需要访问用户的计算机,复制文件,安装并删除它.第二个选项解决了这个问题. 第二种选择更安全.但是,具有良好知识的用户仍然可以在此过程中恢复服务器发出的文件,并将证书安装在其他位置. 使私钥不可导出 另一个需要考虑的重点是,当您颁发证书时,通常会有一个选项允许其私钥可导出.如果设置此选项,则用户可以从安装它的浏览器中导出PK,并将其安装在其他位置.显然你想避免这种情况.因此,请禁用此选项. 使用此选项,用户仍然可以导出证书,但没有其私钥,因此无法将其安装在其他位置. 设置PKI 我没有提供有关如何设置PKI的其他详细信息,因为它主要取决于基础结构(操作系统和版本).如果您想了解有关证书和PKI wikipedia entry for “X.509”和wikipedia entry for PKI的更多信息.那么您可以查找有关在特定基础架构(OS)中设置PKI的其他信息. 这个系统的安全性 你可以放心,这个系统是非常安全的:例如,在我的国家,你可以通过这种方式识别自己,制作许多“官方”的东西,比如申报和纳税. 撤销证书 而且,如果您想知道如果您想拒绝对已经拥有证书的用户的访问会发生什么.答案是您可以随时撤销证书,以便服务器不允许您的用户使用其证书进行身份验证,因为它已被撤销. 用户和机器安全 另一件让您担心的事情是,其他用户将相同的计算机和日志记录到您的应用程序中.由于这个原因,它看起来比较难: >证书仅在您使用安装它的同一用户登录到计算机时可用 >首先,证书授权(事实上,这是由IIS本身处理的) 编辑:肮脏的解决方案,以及所有它们的女王,evercookie,将数据存储在12个不同的可想象和不可想象的地方 我已经看到很多建议使用“魔术方式”来识别用户的机器,而他不知道并接受它,或者,或者可以通过一些用户操作来打破.这些解决方案不稳定,甚至可能不合法.此外,所解释的解决方案都不是可靠的或易于实现的,但是在我的答案结束时我将会这样做.但在此之前,请允许我解释为什么我更喜欢证书解决方案. 安装已颁发的证书不会对用户隐藏,并且除非用户故意删除证书,否则不能破坏该证书.用户可以被告知他需要证书来访问应用程序,因此您既不会作弊,也不会“神奇”地识别他的机器.这是一个干净,支持和记录的解决方案.除了证书不能被caracked或黑客攻击(严格意义上说,一切都可以被破解或黑客攻击,但这太难以破解).除此之外,所有浏览器都可以共享相同的证书,因为它不是安装在浏览器中,而是安装在计算机的证书存储中.因此,即使用户使用其他浏览器打开应用程序,证书仍然存在.并且很容易检查验证它的问题是否是缺少的证书(或与之相关的东西). 但是,如果您仍然希望在没有批准用户的计算机的情况下实现可识别用户计算机的解决方案,或者不解释其工作原理,则可以使用“supercookies”.如果你google for thister,你会发现很多地方都会利用Flash存储.甚至Flash HTML5存储.或者它甚至可以使用许多其他地方来存储所需的信息.但你会发现这种技术不受欢迎.而且可以对抗低点并让你陷入困境.但是,那说,如果你还想做这种“肮脏”的事情,你可以使用evercookie.它是用JavaScript实现的,你可以看到这些信息并从这个链接下载代码: > http://samy.pl/evercookie/ 免责声明:如果你使用这个邪恶的东西并遇到某种麻烦,不要责怪我!我告诉你了! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在Entity Framework中使用存储过程(二):具有继承关系实体
- 为什么ASP.NET自动生成的.designer代码的类型不正确?
- 如何在ASP.NET 2.0应用程序中为API调用启用TLS 1.2?
- asp.net – 如何判断请求是否来自代理?
- asp.net-mvc – 有没有人能够或者至少试图将液体模板语言移
- asp.net-mvc – 同时发送文件并重定向到新页面的MVC方式是什
- ASP.NET DataTable与Json互转源码
- asp.net – RenderBody和RenderSection之间的区别
- asp.net-mvc – 如何在asp.net中使用Captcha mvc
- 在ASP.NET MVC中如何应用多个相同类型的ValidationAttribut
- Asp.NetCoreWebApi - RESTful Api
- ASP.NET:global.asax中的Access Session变量
- asp.net-mvc – Web API IE9 JSON数据“你想打开
- 如何更改.Net页面将在其下运行的扩展名?
- asp.net-mvc – ASP.NET MVC 5(Visual Studio 20
- asp.net – Telerik RadGrid – 如何默认编辑模式
- asp.net – 如何在DLL中添加Web服务引用
- asp.net-mvc – 如何在ActionFilterAttribute AS
- asp.net – 如何验证动态创建的控件?
- ASP.NET和MySQL .Net Framework数据提供程序问题