V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
simonguo
V2EX  ›  JavaScript

跨浏览器存储,你们有什么好的方案?

  •  
  •   simonguo · 2016-09-05 15:08:43 +08:00 · 4997 次点击
    这是一个创建于 2999 天前的主题,其中的信息可能已经有所发展或是发生改变。

    意思就是说,我在 IE 上存储的的值可以在 chrome 等其他浏览器读取的,各个浏览器之间可以共享存储, 之前试过一种方式是 Flash 的 SharedObject,但是 chrome 对 Flash 插件的机制不一样,所有 chrome 不能和其他浏览器共享存储, 你们有其他什么解决方案吗?

    32 条回复    2017-08-23 13:55:39 +08:00
    codehz
        1
    codehz  
       2016-09-05 15:23:23 +08:00 via Android
    给客户机安装一个插件,让所有浏览器都加载,然后就好了。。。。。现在浏览器都是沙箱模式,也就插件可以绕过沙箱访问数据了
    ranran
        2
    ranran  
       2016-09-05 15:34:57 +08:00
    0day
    FrankFang128
        3
    FrankFang128  
       2016-09-05 15:43:08 +08:00 via Android
    存到数据库。。
    lijianying10
        4
    lijianying10  
       2016-09-05 15:46:02 +08:00
    个人觉得工程量比较小的方法有两种:
    1. 写个后端,然后用 ajax 来调数据出来。
    2. 如果客户机有网络,就用 firebase 。
    loading
        5
    loading  
       2016-09-05 15:48:51 +08:00 via Android
    广告联盟都还没使用的技术……
    qhxin
        6
    qhxin  
       2016-09-05 15:56:33 +08:00
    applet
    simonguo
        7
    simonguo  
    OP
       2016-09-05 23:11:10 +08:00
    @FrankFang128 @lijianying10 不存服务端,需要存在浏览器端,因为需要解决的问题就是像 @loading 说的一样,广告联盟还没使用的技术,需要存储浏览器用户访问者的唯一 ID ,当然 applet 和 浏览器器插件更改不可能,存在兼容性问题。 我也觉得暂时没有什么技术可以解决这个问题。
    alcarl
        8
    alcarl  
       2016-09-06 00:10:29 +08:00
    window.localStorage
    qq286735628
        9
    qq286735628  
       2016-09-06 00:53:06 +08:00
    如果是一个开放圈子,现有浏览器技术,是没有办法实现跨浏览器获取 设备唯一识别 (我这里称为 DeviceID )。
    如果是一个封闭的圈子,用 UserID 比 DeviceID 更有效。

    有人提到插件和客户端等方式 ,如果你的追踪对象允许安装这些客户端,我相信登录操作的成本比安装客户端更底。
    SoloCompany
        10
    SoloCompany  
       2016-09-06 03:04:34 +08:00
    真会异想天开
    你连存服务器都无可能,还想存客户端

    最理想解决方案,开发一个操作系统,把 Microsoft Windows 干下去
    simonguo
        11
    simonguo  
    OP
       2016-09-06 08:32:29 +08:00 via iPhone
    @SoloCompany 不是异想天开,我现在在 IE 存储一个值,你可以认为这个值为一个 cookie ,我可以在 firefox 上取到这个值。
    EXDestroyer
        12
    EXDestroyer  
       2016-09-06 10:45:58 +08:00
    @simonguo 这不是异想天开,但是就是搞笑的需求
    你在 IE 存一个值和在 chrome 在 QQ 在 UC 在 FF 等的情况都不一样,浏览器要是能给你跨平台读取数据那就是漏洞了
    做这种东西就应该做一个 PC 客户端
    simonguo
        13
    simonguo  
    OP
       2016-09-06 11:07:52 +08:00
    @EXDestroyer 你做一个 PC 客户端也只能解决一个用了你 PC 的用户的问题,互联网上这么多的用户各个终端不一样,各个浏览器不一样,各种兼容不兼容,考虑的情况非常很多。 这也不是一个搞笑的需求,这个是业务场景就确实存在的需求,而且在广告与网站监测等领域也确实在生产环境中实践过,只是现在还存在兼容和效率问题,不是非要让你通过浏览器这个途径出发去解决这个问题。
    qile1
        14
    qile1  
       2016-09-06 11:15:00 +08:00 via Android
    可以让浏览器开发一个功能,存在一个任何用户都可以读的一个公共地方,你自己把需要的数据放里面,对了,为了安全性,你用自己的 key 或者算法加密后储存,读取时解密。。。。。。
    其他自己想吧
    YuJianrong
        15
    YuJianrong  
       2016-09-06 13:10:39 +08:00
    @simonguo 这不是搞笑的需求什么是搞笑的需求?

    在这个大家越来越重视隐私,浏览器厂商越来越多地用 DNT , Sandbox 等政策 /技术限制网站 /插件获取个人信息的时代,还要逆潮流而行研究如何记录 /传输个人信息,这还不搞笑吗?

    我话放这了,即使你能找到什么漏洞,不出一年,最新的浏览器肯定统统不能用。
    simonguo
        16
    simonguo  
    OP
       2016-09-06 14:26:48 +08:00
    @YuJianrong 存储信息就代表不重视隐私了? 从 cookie 到 Web Storage , IndexDB 以及 WebSql ,浏览器一直都在满足各种存储,提升开发体验,你觉得这样有问题?
    YuJianrong
        17
    YuJianrong  
       2016-09-06 14:44:04 +08:00
    @simonguo 那是在保护个人信息不泄露的前提下做的存储方案,不管是 webStorage 还是 indexDB ( webSQL 都废弃了提这个干吗),最重要的特性都是不能在外域获取信息,避免其他网站存储的信息被泄露和盗用,你这倒好,不要说跨域了,都跨浏览器了,你觉得这样没问题?

    如果没问题,你觉得为什么这种各大广告厂商、黑客、政府监听部门都喜闻乐见的功能为什么还没烂大街呢?
    SakuraKuma
        18
    SakuraKuma  
       2016-09-06 15:22:05 +08:00
    这个只能写端了吧, 不走后端, 纯浏览器是没可能的...上面已经说了..
    wweir
        20
    wweir  
       2016-09-06 17:23:16 +08:00
    对此,我想到了 QQ ,点击客户端上的链接,无论打开什么浏览器都能获得相应的信息。
    当然,如果说你没权限要求用户装客户端和登陆,我只能往不好的方向揣测这么干的意图。
    beginor
        21
    beginor  
       2016-09-06 18:42:55 +08:00 via Android
    开发一个类似 QQ 的客户端,装在客户机上
    muzuiget
        22
    muzuiget  
       2016-09-06 22:55:52 +08:00
    @YuJianrong 说得对了,这真是个搞笑的需求,浏览器就是个沙盒,对 Flash 知名插件也是会有沙盒。除了写个桌面应用级的插件来实现,别无他法。
    codehz
        23
    codehz  
       2016-09-06 23:16:31 +08:00
    其实我第一个回复就是想说这个需求不现实。。。 Flash 共享数据就是个漏洞。。。早该补上了。。。

    我们设想一种情况( X 域是攻击者, Y 域是被攻击者), A 浏览器有安全问题,导致域名 X 可以跨域访问 Y 的内容, B 浏览器没有这个问题,那么当用户使用 B 浏览器的时候,留下了关键数据 a ,然后再使用 A 浏览器访问 X 域,然后 X 域通过跨域漏洞伪装为 Y 域,可以读取到关键数据 a 。。。。

    这就是强行扩大攻击面的做法。。。有道德的浏览器厂商都不会提供类似的接口,能用的一定是(浏览器自身或者第三方的)漏洞。。。

    Flash 有的那个方法,实际就是个漏洞,所以 Chrome 各种限制 Flash ,最新版是默认不加载 Flash 插件的(这就是为啥我上 B 站视频都白屏的原因。。。)。

    Flash 被批漏洞多不是没有道理的
    simonguo
        24
    simonguo  
    OP
       2016-09-07 00:33:16 +08:00
    也可以操作剪切板跨一些浏览器存值
    phxsuns
        25
    phxsuns  
       2016-09-07 08:44:58 +08:00
    不建议这么搞。即使现在能走通,很有可能过一阵子就不能用了。这是给自己找麻烦。
    bk201
        26
    bk201  
       2016-09-07 09:38:15 +08:00 via iPhone
    这种要实现大一统的,要么远程传输数据,要么每个都开发插件,没其他办法.
    tidewind
        27
    tidewind  
       2016-09-07 09:56:37 +08:00
    朋友你真的懂浏览器吗?你这个思路就是奔着 0day 去的,还谈个什么
    imbahom
        28
    imbahom  
       2016-09-07 10:08:42 +08:00
    我想问,有没有什么技术,能让我操作别人的硬盘,逃
    ppwangs
        29
    ppwangs  
       2016-09-07 10:10:40 +08:00
    你怎么保证不同用户使用同一台电脑是使用其本人的账户……
    simonguo
        30
    simonguo  
    OP
       2016-09-07 10:20:57 +08:00
    SharedObject 我已经用了好几年了, 嘿嘿
    YuJianrong
        31
    YuJianrong  
       2016-09-07 20:01:28 +08:00
    你自己也知道 SharedObject 在 Chrome 里不能用(因为在沙盒里)。

    再过两个版本 Chrome 里 Flash 就是缺省关闭的了; Firefox 早就缺省不安装 Flash 了。

    难道你还看不出趋势还想问怎么挖洞?嘿嘿
    jugelizi
        32
    jugelizi  
       2017-08-23 13:55:39 +08:00
    所以 360 可以读取你 QQ 的聊天记录 对么
    技术人员真的很容易走火入魔啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1168 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 18:15 · PVG 02:15 · LAX 10:15 · JFK 13:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.