V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
zhng920823
V2EX  ›  奇思妙想

既然有 SSL pinning, 那么有没有针对静态资源尤其是 js 脚本的 pinning

  •  
  •   zhng920823 · 92 天前 · 1340 次点击
    这是一个创建于 92 天前的主题,其中的信息可能已经有所发展或是发生改变。

    参考前文 供应链投毒后,我们的选择还剩下哪些?

    最近做了个匿名加密可 WebRTC 视频的聊天室

    填昵称即可进的匿名聊天室

    • 这个聊天室的一大特点就是, 前端加密后再发送, 服务端看不聊天内容.
    • 而且前端代码量不大, 用户可借用工具或 AI 分析验证这个说法.
    • 但是如果需要长期保持信任, 那么需要验证前端代码从上次检验过后没有被修改过.
    • 那个前端只通过 websocket 和后台交互, 如果能保证前端没有被修改, 能保证通信是安全的.
    • 这个验证工作能否由浏览器或插件自动进行呢?

    如果这个特性能被浏览器标准化, 那么基于浏览器的应用能更好发展

    能成为互联网除了 TLS 外最基础的一个信任环节, 一个人/公司开始可能不坏, 但是后面会变坏.

    毕竟如文章开头提到的那件事, 现在对 cdn 和公共资源提供者无底线信任是最薄弱的环节.

    • 这个东西就是类似 script 标签的 integrity 属性, 但是工作在更底层的部分.
    7 条回复    2024-08-21 19:07:54 +08:00
    0o0O0o0O0o
        1
    0o0O0o0O0o  
       92 天前 via iPhone   ❤️ 2
    不记得是第几次复制粘贴这个链接
    https://news.ycombinator.com/item?id=39436238

    去年吵翻天的 WEI 风波证明了人们不接受这样的东西,我认为不用抱这种期待了
    https://en.wikipedia.org/wiki/Web_Environment_Integrity

    做应用的话可以参考 fb 的做法,相当于信任 Google 和 Mozilla 的市场这样的分发渠道
    https://chromewebstore.google.com/detail/code-verify/llohflklppcaghdpehpbklhlfebooeog
    zhng920823
        2
    zhng920823  
    OP
       92 天前
    @0o0O0o0O0o #1 大佬果然博学
    qweruiop
        3
    qweruiop  
       92 天前
    wei 已经不行了,现在最好的办法就是信任 Google/Apple 的分发渠道啦,web 的东西就算了吧。。。
    iqoo
        4
    iqoo  
       92 天前
    全站静态资源 Hash 锁定,几年前就写过: https://github.com/EtherDream/freecdn/blob/master/docs/feature/README.md#%E5%85%A8%E7%AB%99-Hash-%E6%A0%A1%E9%AA%8C

    都快忘了这个项目了,好久没更新。
    0o0O0o0O0o
        5
    0o0O0o0O0o  
       92 天前
    @iqoo #4 SRI 或者说目前浏览器网页的所有方案都满足不了 OP 的需求,毕竟只是 Subresource ,也就是你提到的第三方站点,OP 设想中应用则是连自己的站点也无法信任
    zhng920823
        6
    zhng920823  
    OP
       92 天前
    @iqoo #4
    @0o0O0o0O0o #5

    只是全站静态资源 hash 固定还不够 也不够灵活

    还要要求原始的代码够简单, 不说能完全让人读懂, 但至少能粗略审核保证没有主观恶意或漏洞/后门

    要保证从服务器动态获取的只有数据, 不能有执行代码, eval 和动态加 script 标签肯定不行.
    (注: 我的 webd 网盘的早期版本就是远程加载 js 文件, 当时想的是将来灵活加广告.
    近期版本都改成了请求远程数据, 解析成链接加上去, 即便服务器被攻陷了, 用户也很安全.)

    如果浏览器发现网站代码更新了, 做一次简单的分析, 改颜色改大小改文字图片这种, 可默认放过.

    js/wsam 代码则用 AST 语法树分析, 给高级用户们显示个比较直观的 diff 代码, 给麻瓜们显示这次修改的风险等级.

    这个原则下的网站/APP 需要做到真正小而美, 一坨坨的东西肯定不行.

    Q: 如果依赖了太多东西整体庞大分析起来费劲怎么办?
    A: 被依赖的东西做成标准模块, 带上签名, 避免重复分析.

    下面的贴提到一些杀毒软件在做类似的工作, 但不是标准化行为.
    /t/1064948 火绒 SSL 流量嗅探?

    我觉得以后浏览器应该考虑这个东西, 毕竟现在浏览器已经是操作系统了.
    如果有认识 chrome 或 ladybird 浏览器的大佬, 可以提一下这个想法.
    0o0O0o0O0o
        7
    0o0O0o0O0o  
       91 天前
    > 还要要求原始的代码够简单, 不说能完全让人读懂, 但至少能粗略审核保证没有主观恶意或漏洞/后门

    这是优点,但我认为和要讨论的浏览器提供的特性没有太大关系,因为这样的特性应当是通用的,而且我对未经训练的人士能审计出精心构造的漏洞持怀疑态度。这个特性需要确保应用在被专业机构审计后,用户一定可以原封不动地拿到审计过的版本,浏览器网页欠缺这个保障。

    > 如果有认识 chrome 或 ladybird 浏览器的大佬, 可以提一下这个想法

    它们是开源项目,你可以自己去提 proposal 。但我建议先了解 WEI 风波期间对它的那些激烈批评,了解它为什么广受批评:浏览器是一个“通用”的运行环境,你当然可以借助这个特性保护用户的安全,但别人也可以借助这个特性剥削用户。我认为 Chromium 数年内是没机会再(往所有平台)加入这类特性了,ladybird 的定位则让它天然抵制这类特性。我坚持我的观点:不要在**浏览器网页**中解决这些问题,既不要试图在现在用各种思路实现(也不可能实现),也不要期待未来会增加这样的特性。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3402 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 11:03 · PVG 19:03 · LAX 03:03 · JFK 06:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.