密码使用哈希算法加密
为什么提出这个新的特性改动 就算用户得到了Notion page id也无法直接破解密码的值
描述一下你推荐的解决方案 用户在Notion的文章password里填写SHA256加密后的密码,前端输入密码后先转换为SHA256的值再对比验证
描述一下你考虑过的其它替代解决方案 无
补充说明 无
我也是发现,页面分享以后,人家是能通过notion原地址看到密码的,现在这个问题还是不能解决吗?
只要能有pageid就能获得原始notion界面内容了,密码hash机制也无法防止
个人自己实现了隐藏pageid,这样hash密码就变得有意义了起来,起码确实是只能拿到hash后的密码了这样就是
我觉得这是这个项目的最大硬伤了,密码毫无意义。
没那么夸张吧,很多人都不懂,pageid是在哪,而且拿到了也不知道怎么访问原始notion页面
验证代码可直接被跳过,具体来说就是在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
)
};
跳过前面的判断条件
验证代码可直接被跳过,具体来说就是在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 ) };跳过前面的判断条件
实现本身就是前端校验,除非改成后端校验才能做到不被绕过