Perl中Web控制面板登录的唯一Web浏览器标识ID

gpw*_*pwr 15 authentication encryption cookies perl

Web浏览器是否具有可以传递给Perl脚本的唯一ID?(就像您在商店购买的独特系列产品一样)

例如:如果我安装了Web浏览器,此Web浏览器是否可以为PHP或Perl脚本提供唯一的标识ID?

我正在寻找独特的东西的原因是做以下事情:

  1. 我有一个用户名和密码的用户数据库.

  2. 用户名/密码被加密并设置为用户的Web浏览器的cookie,以便用户可以登录和注销我的Web应用程序.(登录时加载的每个网页都会查看cookie并在cookie用户/传递正确时授予访问权限)

  3. 如果黑客设法从用户​​窃取加密的用户名和密码cookie,他将能够使用该被盗的加密详细信息登录.

如果用户的浏览器都有唯一的ID传递,那么每次用户使用加密的用户/传递cookie时,我都可以记录这些ID并匹配它们.这样,如果唯一ID不匹配(先前已记录的内容),则用户将被注销并要求再次手动登录.

如果加密的用户/通行证被盗,黑客将无法使用它,因为唯一的浏览器ID将不匹配.用户/密码cookie已加密,黑客无法看到用户名或密码.当唯一的浏览器记录的ID与Web应用程序不匹配时,将要求用户手动登录,黑客将无法手动登录,因为他偷走的用户/通行证已加密.


使用IP地址是一种可能的解决方案,但是解决方案很差,因为许多(如果不是大多数)ISP将动态IP分配给其客户端的Internet连接.

使用时间也不是一个好的解决方案,因为我希望用户一次可以在同一台计算机上登录数周(如果他们选择的话),以方便使用.


有人对上述情况有任何解决方案吗?

我一直在寻找一种从浏览器中获取独特功能的方法,但这似乎不太可能.有可能吗?

sco*_*ozy 23

浏览器没有唯一的ID,但可以进行良好的指纹识别.EFF已经测量过,在最好的情况下,浏览器发送的信息(包括用户代理字符串和其他HTTP头)代表18.1位的熵,这意味着如果你随机选择两个浏览器,你有2个机会在18.1( ≈280,000)他们会有相同的"指纹".他们建立了一个网站,您可以在其中估算浏览器发送的信息的程度熵.

有些网站使用此功能.例如,我的银行存储了我最常用于连接到其网站的三种浏览器的信息,并在我不使用其中一种时向我询问其他验证问题.

另一方面,所有这些信息都是完全可以欺骗的:如果有人能够进行中间人攻击并窃取cookie,他们也可以窃取浏览器发送的所有标题,并可以重复使用它们在您的网站上进行身份验证.如果浏览器实际上具有唯一ID,情况也是如此.

除了使用SSL加密的连接(https)之外,您需要另外支付签名证书或创建一个会向访问者显示安全警告的自签名证书,这样做的另一种方法是采用更好的做法来防止会话劫持.

首先,在cookie中保留用户名和密码(即使加密)也不是标准.你应该做的是,一旦用户登录你的网站,为他们分配一个随机的,单次使用的会话ID,你将存储在你的数据库中,同时有一个到期时间(你可以在每次用户与你的网站互动时扩展),这对他们来说是一个cookie.

如果您想要更高程度的保护,一个选项是每次用户发送HTTP请求更改会话ID .您还可以存储每个用户用于连接到您的网站的IP地址列表,或者IP地址掩码(例如X.Y.*.*)如果它经常更改,并且如果他们从不寻常的地方连接则让他们自己进行身份验证.如果你这样做,最好问他们"你会再次从这个地方连接吗?"


Laz*_*iya 7

您可以使用“ Html Local Storage ”在用户浏览器中永久存储一些唯一值(例如:用户 ID),没有过期日期,并将相同的值与有关用户代理的信息存储在数据库中。

然后,您将用户代理信息与本地存储中的数据一起传递,并将其与数据库中的数据进行匹配......

// store
localStorage.setItem("myValue", "123-abcd");

// retrieve
var myValue = localStorage.getItem("myValue");
Run Code Online (Sandbox Code Playgroud)

我不确定这种识别用户的方法有多安全,但 Html 本地存储应该只能由来自一个来源(相同域和协议)的页面访问。

还有“HTML 会话存储”,用于在用户浏览器中存储仅一个会话的数据。


tob*_*ink 5

不,浏览器没有唯一的ID。哪有这回事。如果有这样的事情,那将是在线广告公司的梦想!

就是说,如果您通过HTTPS为站点服务,则可以为客户端颁发客户端X.509证书。这些将由您的组织进行加密签名,因此相当不可伪造。(尽管很明显,如果有人可以访问您客户的计算机,他们可以对其进行复制-但是,对于任何浏览器ID号都一样!)安装证书后,每次浏览器向您的网站发出HTTPS请求时,您的网站可以要求其证书,并且可以用来验证用户的身份。

  • 我希望听到更多信息,以及如何实施此检查的示例。我有启用SSL的网站,并希望将某些内容放入客户端浏览器中,以便以后在我的服务器上进行验证。 (2认同)