Web applications 一些web服务如何识别I';我从新位置登录?

Web applications 一些web服务如何识别I';我从新位置登录?,web-applications,geolocation,ip-address,ip-geolocation,Web Applications,Geolocation,Ip Address,Ip Geolocation,我注意到一些web服务(即Steam、Facebook、Google等)能够检测到新的浏览器/新位置,在某些情况下,需要我通过电子邮件代码对其进行验证 他们是怎么做到的?他们用饼干吗?还有别的办法吗?这有多可靠 如何检测用户是否从其“正常”环境登录,无论是同一浏览器、同一台计算机还是同一大致位置?以下是您可能感兴趣的一些想法 正如我已经告诉你的,这不是一门精确的科学。你应该先把重要的东西放在安全上,然后考虑所有这些“可选”< /P> 另外,请记住,所有建议的“持续时间”都是主观的,取决于访问您的

我注意到一些web服务(即Steam、Facebook、Google等)能够检测到新的浏览器/新位置,在某些情况下,需要我通过电子邮件代码对其进行验证

他们是怎么做到的?他们用饼干吗?还有别的办法吗?这有多可靠


如何检测用户是否从其“正常”环境登录,无论是同一浏览器、同一台计算机还是同一大致位置?以下是您可能感兴趣的一些想法

正如我已经告诉你的,这不是一门精确的科学。你应该先把重要的东西放在安全上,然后考虑所有这些“可选”< /P> 另外,请记住,所有建议的“持续时间”都是主观的,取决于访问您的站点的狂热程度以及设备的检测强度


以下是有助于识别设备的因素:

访问cookie(个) 首先,
访问令牌cookie
可能不一定与
设备id cookie
不同,事实上,访问令牌可用于唯一标识浏览器,即使令牌字符串经常更新:1会话=1设备

相反,如果你想考虑两个或多个浏览器相同的设备,你当然应该使用两个不同的cookies。1台设备=chrome上的1个会话+firefox上的1个会话,等等

第二,cookie应该“永不”过期(将其设置为在几年内到期)。 如果您想终止“记住我”的持续时间,您应该只在代码中执行。 这是因为“永不”过期的cookie实际上与过期的会话相关联,因此识别用户正在使用的设备仍然很有用 此外,当用户注销时,不要在代码中删除cookie,在内部销毁会话

知识产权 如何登录IP? 每次用户将IP更改为你认为有效的IP时,你应该登录它。 这意味着您需要一个表来记录所有IP
sessionID | IP | lastActionDateTime |[其他因素]+
。如果已经存在包含deviceID和IP组合的行,并且例如在12-24小时内创建了
lastActionDateTime
,则将更新
lastActionDT
,否则应创建新行。除非其他因素发生变化,否则这是不可能的

如何检查更改的IP是否有效? 使用GEOIP数据库,您可以获得用户的位置:这甚至不太可靠, 但是,您可以使用Google Maps API来检查最后一个已知位置和与IP关联的新位置之间的距离,或者如果GEOIP数据库已经给您提供了LAT、LONG值,您可以简单地计算两点之间的距离 (…我实际上没有检查,但应该没问题)。 所以,假设你可以考虑一个有效的IP,它距离最后一个已知的位置是100-500公里。 IP何时改变?
  • 使用3G IP时,即使走了一些步骤,也可能会发生变化,因此,如果您使用不同的IP重新访问页面视图,并且最近使用的前一个页面视图是使用相同的IP创建的, 你必须考虑IP是有效的,因为它是有效的,只是在几分钟之前(<代码> LaStActoDunt<代码>),当然也相应于其他因素的状态,它应该与最后已知的相同。

  • > p>如果在<>强> >小时>强>或可能是不活动的几天内检测到更改的IP,则可能需要考虑其有效性并允许登录,尤其是在其他因素匹配的情况下,或者如果您想要更强的安全性,则可以将此情况视为以下内容:

  • 如果在长时间不活动后检测到IP发生更改,则应请求使用表单再次登录。此处会话已过期,但cookie仍然存在且可用,因此如果表单凭据有效,您将续订
    deviceID
    过期,而不是创建新的
    deviceID

UA字符串 UA字符串提供了一些额外的检查,但在大多数情况下不一定相关,但对于检测可疑的版本控制更改非常有用(例如,如果同一会话首先生成Chrome 27.0页面视图和 一段时间后,Chrome26.0页面浏览?)

  • 用户可能使用了用户代理交换机
  • 用户在同一台计算机上的另一个浏览器上导入了首选项(包括cookie)
  • 会话cookie被盗
因此,这是非常不可靠的,但正如您所想象的,它提供了一些提示

(额外)屏幕属性

如果您想在同一台计算机上使用相同的“设备”,可以使用JavaScript两个浏览器(当然,由于这是客户端检查,因此安全性不可靠,但仍有帮助……例如,如果有人窃取会话cookie,他可能不知道他需要伪造这些值,您将使用这些值进行额外检查:-P)。无论如何,

window.screen
包含这些属性,这些属性对于唯一标识操作系统/计算机非常有用

  • window.screen.availWidth
    window.screen.availHeight
  • window.screen.availLeft
    window.screen.availTop
  • window.screen.width
    window.screen.height
…请记住,值可能会在移动设备上动态反转 (检查
窗口、屏幕、方向

(额外)地理定位API 可以使用HTML5地理定位API进行另一项附加检查(当然也有,因为它是客户端的,所以安全性不可靠,但如果使用它会很有帮助) 与之前的因素合作)

希望能对你有所帮助

韦斯

免责声明:我与Steam没有任何关系


他们用饼干吗

或许,您可以通过网络嗅探器找到答案。请参阅: