NotionNext icon indicating copy to clipboard operation
NotionNext copied to clipboard

密码使用哈希算法加密

Open wuyuhanzijin opened this issue 1 year ago • 7 comments

为什么提出这个新的特性改动 就算用户得到了Notion page id也无法直接破解密码的值

描述一下你推荐的解决方案 用户在Notion的文章password里填写SHA256加密后的密码,前端输入密码后先转换为SHA256的值再对比验证

描述一下你考虑过的其它替代解决方案

补充说明

wuyuhanzijin avatar Jul 26 '24 01:07 wuyuhanzijin

我也是发现,页面分享以后,人家是能通过notion原地址看到密码的,现在这个问题还是不能解决吗?

realzsy avatar May 11 '25 08:05 realzsy

只要能有pageid就能获得原始notion界面内容了,密码hash机制也无法防止

qixing-jk avatar May 12 '25 09:05 qixing-jk

个人自己实现了隐藏pageid,这样hash密码就变得有意义了起来,起码确实是只能拿到hash后的密码了这样就是

qixing-jk avatar May 12 '25 11:05 qixing-jk

我觉得这是这个项目的最大硬伤了,密码毫无意义。

realzsy avatar May 13 '25 13:05 realzsy

没那么夸张吧,很多人都不懂,pageid是在哪,而且拿到了也不知道怎么访问原始notion页面

qixing-jk avatar May 14 '25 04:05 qixing-jk

验证代码可直接被跳过,具体来说就是在js中寻找类似这样的函数

        w = e => {
          if (!t) return !1;
          let o = I() ((null == t ? void 0 : t.slug) + e);
          return !!e &&
          o === (null == t ? void 0 : t.password) &&
          (
            f(!1),
            localStorage.setItem('password_' + l.asPath, e),
            p(r.COMMON.ARTICLE_UNLOCK_TIPS),
            !0
          )
        };

跳过前面的判断条件

zhufengning avatar Aug 26 '25 18:08 zhufengning

验证代码可直接被跳过,具体来说就是在js中寻找类似这样的函数

    w = e => {
      if (!t) return !1;
      let o = I() ((null == t ? void 0 : t.slug) + e);
      return !!e &&
      o === (null == t ? void 0 : t.password) &&
      (
        f(!1),
        localStorage.setItem('password_' + l.asPath, e),
        p(r.COMMON.ARTICLE_UNLOCK_TIPS),
        !0
      )
    };

跳过前面的判断条件

实现本身就是前端校验,除非改成后端校验才能做到不被绕过

qixing-jk avatar Aug 26 '25 18:08 qixing-jk