抛开各种鉴权不谈,只是想实现一个简单的全站加密(或者说授权访问)。比较常见的应用就是给朋友分享一下自己写的网站,但是不想被公开访问(考虑到可能托管在各类 pages 上面,希望可以纯前端实现)。
目前的思路是用 service worker 劫持所有的资源( html,js,css )请求,用非对称解密之后再返回。
有这种已经实现的轮子吗?或者有没有更好的方案。
1
Jammar 92 天前
套个 iframe 里面登录
|
![]() |
2
teem 92 天前 ![]() 页面弹窗输入密码访问,密码告诉朋友
|
![]() |
3
liyang5945 92 天前
劫持所有资源不现实,有已经实现的轮子,hexo 有插件可以把文章内容加密成乱码(查看 html 源码也是乱码),输入密码后访问
|
![]() |
5
tool2d 92 天前
service worker 这种最容易被破解了,和主线程交互几乎都是固定 API ,拦截一下返回值就行了。
你还不如写在 JS 代码里,混淆一下。 除非你网站不可替代,要不然没几个人会反编译混淆后的 JS 。 |
8
mxT52CRuqR6o5 92 天前
@tool2d 得有密钥才能解密啊
|
![]() |
9
tool2d 92 天前
@mxT52CRuqR6o5 在 service worker 里 hook api ,返回的应该就是明文了。
|
10
duanxianze 92 天前
直接在 nginx 加个鉴权不就好了?
|
11
kaedeair 92 天前
网关负责鉴权就行了
|
12
hingle 92 天前
直接用 /path 当成密码就行了
|
13
mxT52CRuqR6o5 92 天前
@tool2d 你得先有秘钥,才有可能 hook 到解密完的明文
|
![]() |
14
tool2d 92 天前
@mxT52CRuqR6o5 没理解,按照楼主的思路,在 service worker 里出来的就是文件明文了啊。
密文仅仅是 url fetch 返回的结果,worker 都内部处理过一次了。如果这时候还没有密钥,那浏览器也没办法解析 html 了。 |
![]() |
15
liuidetmks 92 天前
|
![]() |
16
liuidetmks 92 天前
@liuidetmks 页面很轻巧,使用浏览器自带的 crypto API 实现,没有引入其他库。
|
17
mxT52CRuqR6o5 92 天前
@tool2d 密钥前端输入(比如 input 文本框,又或者放到 url query 里),得到秘钥再去 fetch ,service worker 劫持请求用秘钥解密
|
![]() |
18
tool2d 92 天前
@mxT52CRuqR6o5 哦,我理解你意思了。就是加密私密 blog ,不输入密钥没办法查看那种。
因为我看到楼主开头写的是加密 html/js/css 全部资源,还以为是自动解密,不需要输入密码那种。 |
![]() |
20
libook 92 天前
感觉挺有趣的,理论可行,没有见过相关实现,题主可以做一个,我去 star 。
|
![]() |
21
v2yllhwa OP @liyang5945 为什么劫持所有资源不现实呢? hexo 的加密插件我知道,但是仅限于 hexo 能用吧。例如我平时写点前端的小玩意儿打包出来就不能用了。而且用框架的话,主要内容可能都在 js 里面,只加密 html 应该是不行的。
|
![]() |
23
v2yllhwa OP @duanxianze 主题里说过了,可能会托管在 github pages/cloudflare pages 等等,不考虑后端的配合。
|
![]() |
24
v2yllhwa OP |
![]() |
25
vizards 92 天前 via iPhone
配合 webpackJsonP 的类似实现,例如重度使用此功能的 webpack5 module federation 可以实现运行时 dynamic import 进相关的 js 代码文件块(加密后),在 service-worker 层挂一个劫持逻辑做解密,或许具有可操作性?编译时要多做一步加密 jsbundle 的操作
|
![]() |
26
yaphets666 92 天前
某几个页面不要服务端渲染,#xxxx 的路由还会被收录吗?
|
![]() |
27
TomVista 92 天前
把解密方法做成油猴给朋友.
|
![]() |
28
azui999 92 天前
不想被公开访问?
把你朋友拽到你屏幕前面并捆绑住他的手脚,以免他拍照录像, 这样基本就能以绝后患了 |
![]() |
29
Envov 92 天前
我觉得题主说的方法就是很好的方法
|
30
kele999 91 天前
叫朋友去你家看
|
![]() |
31
sobev 90 天前
|
![]() |
32
xieqiqiang00 90 天前
“比较常见的应用就是给朋友分享一下自己写的网站,但是不想被公开访问”
你需要的不是 0 信任网络么 |
![]() |
33
xieqiqiang00 90 天前
[Imgur]( https://imgur.com/HbuZq9V)
|
![]() |
34
QiaTia 90 天前
我记得 confirm ,prompt ,alert 这几个 js 方法是能中断浏览器进程, 如果想做的足够轻直接使用 prompt 足够了
|
35
akakidz 89 天前
内容全部加密发布,给你朋友本地浏览器安装个油猴脚本,本地解密
|