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

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

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

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

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

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