Web 如何限制访问设备

2025 年 2 月 12 日
 imherer

一个内部系统,但是部署在公网上的,用户都是用 chrome 访问,基于安全性考虑加 IP 访问限制,但是有些用户没有固定公网 ip 或者甚至可能有移动设备访问。

有没有什么办法像 app 那样取到设备信息呢,加设备白名单限制访问

7147 次点击
所在节点    程序员
72 条回复
EndlessMemory
2025 年 2 月 12 日
搞个账号不好吗
815979670
2025 年 2 月 12 日
套一层 webvpn 内部系统只允许通过 webvpn 访问,webvpn 不逊用户额外装什么软件 直接用浏览器访问
zgsi
2025 年 2 月 12 日
天啊,这问题不就是我年前遇到的。web 在公网,但是只给公司内部用。ip 是变化的。
想了一圈,最后闲着无聊写了个 chrome 插件,请求接口的时候追加 auth 鉴权
ysc3839
2025 年 2 月 12 日
客户端证书,或者 http basic auth ,用户名+密码就相当于 token
totoro625
2025 年 2 月 12 日
弄个 web 界面,让他们访问之前点击相应的链接把 IP 添加到白名单内,再访问这个系统
CS50
2025 年 2 月 12 日
cloudflare Zero Trust
zgsi
2025 年 2 月 12 日
@zgsi 看了你的补充,我也补充下。
chrome 插件首次安装后生产一个 guid 缓存到本地,然后后台加白名单和权限,然后请求接口的时候把 guid 加密放到 auth 。
这样应该安全吧?
imherer
2025 年 2 月 12 日
@zgsi #27 也有问题。 就像他们说的防君子不防小人,要是有人拿到这个 guid ,直接加到别的设备里,那就相当于新增设备了
zgsi
2025 年 2 月 12 日
@imherer 内部泄露那没办法了。你给他账号密码他一样给别人。我目前这样实现了。目前测试观察阶段很稳定。我目前弊端是要刷新才会生产新的 auth ,后期可能会考虑登录后的状态有效期给长一点来解决。
如果你有了好的解决方案,麻烦踢下我!
KagurazakaNyaa
2025 年 2 月 12 日
试试 mtls 吧,或者基于 FIDO 的设备 passkey
imherer
2025 年 2 月 12 日
@zgsi #29 嗯嗯
chobitssp
2025 年 2 月 12 日
TOTP 动态口令
johnhuangemc2
2025 年 2 月 12 日
IP 限制 + VPN
我们把敏感网站限制成仅公司 IP 可访问, 然后在公司网络部署 OpenVPN, 敏感网站添加 VPN 路由配置走 VPN, 要访问敏感网站就开启 VPN 访问
Lemon2ee
2025 年 2 月 12 日
我也建议从网络层面解决问题。
部署一个 tailscale subnet router 在服务傍边,广播服务 ip
部署一个 tailscale client 在公司内部,添加路由规则
即可达到内部可以访问服务,并且服务无法直接访问公司内部网络
(大概是这样的,没实战过
cxh116
2025 年 2 月 12 日
客户端证书应该是比较成熟的方案吧。楼上有提到,在 nginx 里也可以实现。还可以每个客户端装不同证书,吊销指定的客户端证书。

https://developers.cloudflare.com/ssl/client-certificates/
liuzimin
2025 年 2 月 12 日
@8355 我觉得楼主就是鉴权设备而不是用户。我们也有这样的需求,就算这个用户合法,但是只允许他的特定设备接入。
zgzhang
2025 年 2 月 12 日
你搜索的是 JS 设备指纹
musi
2025 年 2 月 12 日
不然还是用 electron 包个浏览器吧,你想做的都能实现
Karte
2025 年 2 月 12 日
如果真的想进行设备上的限制, 那尽可能做个桌面端. 桌面端获取系统信息然后判定.

如果只想确保登录的人员是合法的, 那尽可能增加双重验证, 或者使用目前最新的认证方案: passkey.

passkey 可以让用户不通过账户名和密码登录, 只需要手机扫描登录的二维码, 然后通过蓝牙与主机交互确认登录.
Karte
2025 年 2 月 12 日
@Karte 这种方案用户无需记住密码, 所有登录操作必须有认证过的设备与页面交互才能进行登录.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/1110896

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX