这是个主意:
如果我可以从 HTML页面(可能是MAC地址)获得带有 JavaScript的计算机的独特之处,那么我可以将此数据用作另一个安全检查吗?
那可能吗?
如果我可以从 HTML页面(可能是MAC地址)获得带有 JavaScript的计算机的独特之处,那么我可以将此数据用作另一个安全检查吗?
那可能吗?
我不打算在客户端检查计算机,我将把它发送到服务器进行检查.如果没有发送,用户将被阻止.所以它不是任何开发人员萤火虫组合可以绕过的东西.我只想再发送一个包含用户名和密码的字符串,这是计算机所独有的,没有人知道他们是否没有从该计算机进入系统.就像用户自己隐藏的密码一样.
解决方法
>您可以尝试使用跟踪Cookie;但请注意,此类机制被视为暂时性的(例如,可以删除cookie).浏览器中的JavaScript是沙箱,因此无法访问页面外的组件.另请注意,使用JavaScript获得的任何安全感都是虚幻的 – 脚本在客户端运行,可以修改(因此无法判断“唯一”数据是真实的还是伪造的)或者完全禁用.
>如果您试图阻止随机人员攻击您的应用,您可能希望在经过一定数量的失败尝试后禁止他们.这不会给你任何安全,它更像是一个捕蝇草 – 它有点限制了烦恼.
>最后,如果您想要实际的安全性,请使用真实(非自签名)服务器证书和客户端证书进行HTTPS – 请参阅例如 this用于实现(但是,该示例使用自签名服务器证书,这不是很安全).这是一种在浏览器本身中很好实现的机制,它为您提供了一个有点安全的系统(配有安全的密钥库)来识别您的用户(而不是基本上有缺陷的JS“安全”,或者依赖于用户 – 可读文件).哦,你的数据在线上加密,这是一个奖励.
>如果您试图阻止随机人员攻击您的应用,您可能希望在经过一定数量的失败尝试后禁止他们.这不会给你任何安全,它更像是一个捕蝇草 – 它有点限制了烦恼.
>最后,如果您想要实际的安全性,请使用真实(非自签名)服务器证书和客户端证书进行HTTPS – 请参阅例如 this用于实现(但是,该示例使用自签名服务器证书,这不是很安全).这是一种在浏览器本身中很好实现的机制,它为您提供了一个有点安全的系统(配有安全的密钥库)来识别您的用户(而不是基本上有缺陷的JS“安全”,或者依赖于用户 – 可读文件).哦,你的数据在线上加密,这是一个奖励.
SSL实际上可以满足您的要求:验证客户端计算机是否具有颁发给该用户的证书.这种机制在浏览器内部工作,而不仅仅在网页内部;因此,与页内JavaScript相比,颠覆这一点要困难得多.它以安全的方式存储大的唯一标识符(客户端证书),并且它可以向服务器证明它实际上具有该标识符 – 这几乎是您的初始要求.
(顺便说一句,使用SSL,数据将在传输过程中受到保护,客户端可以验证服务器的身份;这些不是您的要求,但它们或多或少是必要的,以确保您实际上与真实客户端交谈和真正的服务器)