V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
main1234
V2EX  ›  程序员

WASM 这种技术为啥很少看见使用呢??另外如何防止接口被刷

  •  
  •   main1234 · 2024-02-28 10:16:27 +08:00 · 6181 次点击
    这是一个创建于 374 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前在 WASM 中加密,然后后端解密,感觉十分方便,还没法破解,这种技术为啥很少被使用呢??

    另外求问下,我有一个 IM 的接口,用户可以免登录,如何方式被刷???想要必须在打开页面情况下才能调用

    43 条回复    2024-08-09 19:01:57 +08:00
    Tyaqing
        1
    Tyaqing  
       2024-02-28 10:23:22 +08:00
    1.浏览器的话有 webcrypto 已经足够使用了
    2.校验 refer/csrf token/API 防火墙,这个看你接口价值大不大,大的话依次建设
    pkoukk
        2
    pkoukk  
       2024-02-28 10:31:44 +08:00
    在桌面端软件都逐渐被 react 占领的今天,想反其道行之,用一个更复杂的语言和技术代替简单的,怎么可能呢?
    retrocode
        3
    retrocode  
       2024-02-28 10:36:10 +08:00
    主要是兼容性考虑, 加上绝大多数项目没有很重的必须前端解决的性能需求
    tangtang369
        4
    tangtang369  
       2024-02-28 10:36:51 +08:00
    你可以看看流媒体播放 wasm 是很常见的啊
    cat
        5
    cat  
       2024-02-28 10:37:07 +08:00
    我寻思着 react 和 wasm 也不冲突啊…
    我就在 react 的项目里使用过 wasm 来处理分子结构,用啥技术要看投入产出比
    Senorsen
        6
    Senorsen  
       2024-02-28 10:51:40 +08:00
    > 目前在 WASM 中加密,然后后端解密,感觉十分方便
    这要看怎么定义方便了…
    > 还没法破解
    这个不成立吧,逆向一下就行了
    jim9606
        7
    jim9606  
       2024-02-28 10:52:58 +08:00 via Android
    wasm 只适合计算密集应用,例如非要在浏览器里搞科学计算或者神经网络的。
    io 密集的应用 wasm 很可能没优势,而且 js/wasm 交互需要额外的跨域操作,很有可能被 js 的 jit 优化超过。
    me1onsoda
        8
    me1onsoda  
       2024-02-28 10:56:02 +08:00
    前后端对接麻烦吧
    wanguorui123
        9
    wanguorui123  
       2024-02-28 11:00:51 +08:00
    后端实现麻烦才考虑用 WASM 实现
    qq135449773
        10
    qq135449773  
       2024-02-28 11:06:32 +08:00   ❤️ 1
    一个帖子暴露某些 v2er 真实水平
    main1234
        11
    main1234  
    OP
       2024-02-28 11:11:20 +08:00
    兄弟们,我前端是真不懂啊,我纯纯后端开发,前端大大实在想不出什么加密方法,我才考虑的 WASM[哭]
    main1234
        12
    main1234  
    OP
       2024-02-28 11:13:03 +08:00
    @qq135449773 老哥我真不懂啊,为啥啊,真心求教
    main1234
        13
    main1234  
    OP
       2024-02-28 11:14:07 +08:00
    @Tyaqing webcrypto 这种能防止不断地 debug 最后破解出来么 感觉 web 的 js 代码都是明文的??
    main1234
        14
    main1234  
    OP
       2024-02-28 11:14:48 +08:00
    @Senorsen 一个 golang 写的 md5 逆向后是 2w 多行的 c ,这种要怎么破解??
    wangritian
        15
    wangritian  
       2024-02-28 11:14:51 +08:00   ❤️ 1
    直接调用 wasm 里面的加密方法不就间接破了么,跟破 so 库加密一样
    zzzmh
        16
    zzzmh  
       2024-02-28 11:15:43 +08:00
    前端加密的尽头是不加密,我已经折腾完一整圈现在终于想通了
    main1234
        17
    main1234  
    OP
       2024-02-28 11:17:00 +08:00
    @wangritian 哦我想起来了,我最初的想法是避免直接通过接口调用,需要用户在浏览器下正常打开页面,然后 WASM 里面校验了和前端协商的密码 js 方法,只有在一些 js 方法存在的情况下,WASM 才能运行
    adoal
        18
    adoal  
       2024-02-28 11:22:03 +08:00   ❤️ 1
    wasm 用得确实不多,毕竟开发麻烦,培训班出来的阿狗阿猫们干不了。但是在传统前端不好搞的地方,有能干的人时,还是可以用一下的,比如 B 站。
    adoal
        19
    adoal  
       2024-02-28 11:22:57 +08:00
    另外似乎 wasm 在 web 之外更受欢迎,比如各种 API 网关用 wasm 做插件。有些新的编辑器也用 wasm 做插件。
    xeneizes
        20
    xeneizes  
       2024-02-28 11:35:29 +08:00
    @main1234 #11 我前端加密用的是前端随机生成 aes 的 key iv ,再用后端传过来的 rsa 私钥加密 key iv ,前端传给后端的 data 用 aes 加密
    LeeReamond
        21
    LeeReamond  
       2024-02-28 11:43:37 +08:00
    @xeneizes 所以对方要刷你的接口只需要定位到随机生成部分的代码?
    relsoul
        22
    relsoul  
       2024-02-28 11:47:13 +08:00
    1. wasm 有浏览器兼容性问题,外加一点点性能问题
    2. 恶意用户可以不了解你的加密规则,只需要拿到加密后的结果即可。
    3. 建议在 WAF 层做限流拦截处理。
    yangheng4922
        23
    yangheng4922  
       2024-02-28 11:48:38 +08:00
    @main1234 #14 不需要解密啊 只要逆向到能调用加密方法就行了
    relsoul
        24
    relsoul  
       2024-02-28 11:54:19 +08:00
    @relsoul 补充一点,建议把防止改为 如何提高恶意用户刷接口的成本 这样的话会好理解一点。
    tedding
        25
    tedding  
       2024-02-28 13:27:29 +08:00 via iPhone
    你看看 figma 用了多少🤦🏻‍♂️
    wangritian
        26
    wangritian  
       2024-02-28 13:41:43 +08:00
    @main1234 防君子防不住小人吧,可以插件破解或者干脆自制浏览器。我认为精力还是更多放在服务端,比如限制 ip 的请求频率等等
    xulihang
        27
    xulihang  
       2024-02-28 15:01:31 +08:00
    C++写的图像处理算法一般也都是用 wasm 在浏览器运行的,比如这个条码扫描项目: https://www.npmjs.com/package/dynamsoft-javascript-barcode
    winglight2016
        28
    winglight2016  
       2024-02-28 15:20:16 +08:00
    前端加密没什么意义,增加了自己开发的调试难度,特别是针对不需鉴权的接口,硬要限制使用浏览器才能访问,还不如做个 electron 的客户端更靠谱
    greensea
        29
    greensea  
       2024-02-28 15:32:57 +08:00   ❤️ 1
    WASM...接口防刷……
    这就不得不提一下之前我做的 wCaptcha 了: https://www.v2ex.com/t/910042
    LavaC
        30
    LavaC  
       2024-02-28 15:49:50 +08:00
    1 、大部分前端项目用不上,纯展示或者后台系统根本用不上这种技术;
    2 、大部分前端开发者不具备开发 wasm 项目的技术
    afeiche
        31
    afeiche  
       2024-02-28 16:40:25 +08:00
    cpu 密集的才需要用 wasm ,比如图像,音视频,计算之类的
    lin996feng
        32
    lin996feng  
       2024-02-28 17:34:48 +08:00
    前端都是透明的,没啥用,稍微分析下你的 js 代码,看下调用,然后下载你的 wasm 调用就好了,逆向都不用。
    awinds
        33
    awinds  
       2024-02-28 18:06:14 +08:00
    wasm 已经被网安认为是不安全的
    GeruzoniAnsasu
        34
    GeruzoniAnsasu  
       2024-02-28 18:25:34 +08:00
    因为前端圈子对 js 「终究只是个处理字符串的语言」这项自我认知越来越明确,不再幻想浏览器统治一切了
    icy37785
        35
    icy37785  
       2024-02-28 18:31:55 +08:00 via iPhone
    有一说一,我觉得逆向 wasm 可读性比混淆后的 js 要好很多。
    除了前后端共用代码以外,我一般不咋用 wasm ,毕竟兼容性目前来说还是 js 更好。
    Nosub
        36
    Nosub  
       2024-02-28 19:19:49 +08:00 via iPhone
    最主要是不会,当然简单的 wasm 本身没有任何难度,比如 op 说的加解密,因为 Java ,JavaScript ,c#,c/c++,rust 几乎主流的编程语言都可以编译成 wasm ,而不是像以前的 dll 或是 so 大部分只能通过 c/c++来写,不会是不想去学,不想去用。
    qq135449773
        37
    qq135449773  
       2024-02-29 09:25:02 +08:00
    @main1234 #12 我说的不是你,我说的是这帖子里回复的其他某些人。
    fenglirookie
        38
    fenglirookie  
       2024-02-29 16:43:36 +08:00
    纯前端加密不管怎么加密都都没有意义,除非像百度网盘一样的,加密函数每一次使用的时候从后端获取加解密代码,但是这种就不再是纯前端加密了
    main1234
        39
    main1234  
    OP
       2024-02-29 17:12:14 +08:00
    @fenglirookie 这种怎么防止重放攻击呢??每次调用接口前都要先请求一次加密函数?
    fenglirookie
        40
    fenglirookie  
       2024-03-02 10:44:02 +08:00
    @main1234 百度的做法是有个计数器,每次都不一样
    0xD800
        41
    0xD800  
       243 天前
    @main1234 看一下 greensea 的回复,他的方式挺好的,也可以参考: https://github.com/mCaptcha/mCaptcha
    deprecatedCoder
        42
    deprecatedCoder  
       228 天前
    wasm 离线 英汉字典 https://github.com/mojocn/wasmecdict
    Hooooooey
        43
    Hooooooey  
       211 天前
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2589 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 15:20 · PVG 23:20 · LAX 07:20 · JFK 10:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.