如何在bookmarklet中进行身份验证?

时间:2011-08-22 15:30:26

标签: javascript security authentication bookmarklet

我希望我的bookmarklet要求用户登录。 这是一个想法......我为用户创建了一个iframe登录,并显示了a / c信息。 但我想从服务器获取一些信息,例如,我想知道用户是否已将此页面添加到我的服务器。所以,我想做一个ajax调用,但由于相同的源策略,我不能通过ajax来做。那么,我如何从iframe获取信息?

故事是这样的:

  

用户网络 - >用户点击书签 - >如果登录 - >显示“添加到收藏夹”按钮 - >用户单击“添加到收藏夹”按钮,将URL提交给服务器,重新加载服务器。

     

用户网络 - >用户点击书签 - >如果没有记录 - >显示登录按钮 - >登录成功 - >像以前一样做流程

     

用户网络 - >用户点击书签 - >如果记录 - >检查网站是否已添加到服务器上 - >没有收藏按钮

如您所见,只有iframe存储登录用户的信息。

1 个答案:

答案 0 :(得分:1)

你正在做的事情是不可能的,因为它违反了origin inheritance rules。这样想吧。如果您可以从此时尚的其他网站获取信息,那么您可以阅读CSRF Tokens,或者从他们的Gmail帐户中读取某人的电子邮件。

说到CSRF,大多数登录只是一个带有用户名/密码的简单帖子。您在网站上构建一个与登录所需的POST请求相同的简单<form>。使用JavaScript,您可以在表单上调用.submit(),将浏览器重定向到新认证的会话。实际上这就是POST based CSRF exploit works的方式(尽管通常在CSRF攻击中你认为浏览器已经过身份验证。)。

当然,这不适用于所有应用程序,例如OpenID或gmail。这是因为这些服务通常包含随机值以及登录请求。