编程语言
首页 > 编程语言> > php – 这个Bookmarklet如何让你保持登录这个网站?

php – 这个Bookmarklet如何让你保持登录这个网站?

作者:互联网

我遇到了Evernote’s bookmarklet,并想知道这是如何工作的.

您可以将它拖到您的书签并转到任何网页,点击该书签,它将首先要求您登录.所有这些我已经完成并知道它是如何工作的.

我不明白的一点是,当你登录时,他们验证你并允许你提交东西(在这种情况下,网站网址等).完成后,在您正在查看的页面上放置一个小叠加层的书签将消失.

When you go to a new tab and use the
bookmarklet again you are still logged
in! How?

当他们的书签将叠加层加载到页面上时,我可以看到他们正在使用iFrame – 但他们是否设置了cookie或其他内容?如果是这样,这是安全的吗?任何人都可以改变价值观?或者他们使用某种私人/公钥系统

顺便说一句,我想用PHP / Javascript(也许是JQuery)来复制这个Bookmarklet.如果有人能帮助我理解他们是如何做到这一点或者指向我相关的教程,我将不胜感激.

谢谢大家的帮助.

解决方法:

首先,这是bookmarklet执行的代码:

(function(){
    EN_CLIP_HOST = 'http://www.evernote.com';

try{
    var x = document.createElement('SCRIPT');
    x.type='text/javascript';
    x.src = EN_CLIP_HOST + '/public/bookmarkClipper.js?' + (new Date().getTime()/100000);

    document.getElementsByTagName('head')[0].appendChild(x);

} catch(e) {

    location.href = EN_CLIP_HOST + '/clip.action?url=' + encodeURIComponent(location.href) + '&title=' + encodeURIComponent(document.title);
}

})();

它的作用相对简单.它尝试从Evernote站点获取脚本并为请求添加时间戳,以便始终提取新副本.如果成功,则会在页面中添加一堆JavaScript,构建一个iframe,从中公开所有Evernote功能,然后iframe可以使用标准cookie等,以确保您已登录,然后处理您的请求.

catch块是为了防止动态脚本加载失败,导致你被重定向到Evernote站点,所以(我猜)它可以从那里剪辑内容.

要回答有关您如何登录的具体问题,您仍然登录,因为您的浏览器现在具有Evernote站点(www.evernote.com)的会话cookie,因此当iframe在第二个站点上打开时,这些cookie随身携带而且Evernote认识到你已经登录了.使用cookies几乎是网上会话的标准,所以他们在这里没有做任何特别的事情,我相信你可以搜索SO以解决安全问题围绕基于cookie的会话.

重点是iframe本质上就像打开一个单独的窗口,除了它允许一些有限的数据由基页传递给iframe,因此它知道你在哪个网站.

希望有所帮助.

标签:php,javascript,cookies,bookmarklet,evernote
来源: https://codeday.me/bug/20190701/1343177.html