大多数人把二维码当成一个通往网页的无害快捷方式。很多时候确实是。但二维码只是一个装文字的容器,而那段文字可能比一条链接敏感得多。在你把一张码图丢进搜到的第一个"在线二维码识别"之前,值得先弄清楚你可能交出去的是什么——以及交给了谁。
二维码里到底能装什么

那片黑白图案编码的是纯文本,按惯例这段文字可以是很多东西:
- 一个网址——最常见,但有时是私密或一次性的链接(一次密码重置、一份邀请、一个"未公开"而非真正公开的文档)。
- 一个 Wi-Fi 名称和密码——路由器上和酒店里那种"扫码连接"的码,字面上就把网络名和密码以明文编码在里面。
- 一张名片(vCard)——姓名、电话、邮箱,还有家庭或办公地址。
- 一个登录或支付令牌——有些 App 用二维码来授权一次会话或一笔转账,里面那串字符实际上就是一把钥匙。
- 纯文本或一段消息——任何人愿意编码进去的东西。
当你在自己的设备上解这些时,它们对你没有任何危险。变成问题,是在"解码这件事需要把图片送去别处"的时候。
被忽略的那一步:"在线识别"会上传你的图片

这里有个容易漏掉的点。一个典型的在线二维码识别,工作方式是把你的图片文件上传到它的服务器、在那边解码、再把结果传回来。也就是说,图片——连同码里编码的一切——离开了你的设备,落到了你控制不了的硬件上。要是一条通往公开文章的链接,无所谓。可要是一个 Wi-Fi 密码、一个登录令牌,或一张带家庭住址的名片,你就等于把一个秘密发到了陌生人的服务器上,它可能在那里被记录或缓存——而这一切,只为读一段本来就在你屏幕上的文字。
你可以检查一个工具是否上传:看有没有随文件大小增长的进度条,或者打开浏览器的网络(Network)面板,看有没有一个大请求带着你的图片。真正本地的工具两样都没有。
改成在本地解
尊重隐私的做法,是在你自己的浏览器里解码,让图片根本不出门。
IMG.DIY 的二维码识别正是这么做的。你给它一张图片——拖、粘或选文件——它把图画到 canvas 上,用 jsQR 库直接在你的浏览器里把码解出来。什么都不上传。没有账号,也没有服务器替你干活,而且页面加载完之后,断网也照样能用。你可以亲自验证:打开工具,开飞行模式,解一个码——它还是能解,因为流程里从来就没有服务器。
如果码是网址,工具会给你一个可点的链接(带 rel=nofollow),让你在决定打开前先看清目的地。如果是 Wi-Fi 字符串或名片,你会得到原始文字加一个复制按钮——读它、用它,它都留在你的机器上。
对付敏感码的一个明智习惯
两条小规则让你更安全:
- 动手前先看清文字。 解码会在你的设备连接任何东西之前,把目的地或内容显示给你。光这一点就化解了很多基于二维码的骗局——那些骗局会把印着的码换成指向恶意地址的码。
- 让工具配得上秘密的分量。 对一条公开链接,在哪儿解都无所谓。对一个密码、一个令牌或某人的个人信息,就在本地解,让这个秘密从一开始就不离开你的设备。
诚实的限制值得说清:它从你提供的图片里读码,一次一个,不走实时摄像头——这是为了让一切都留在本地而做的刻意选择。对于二维码可能藏着的任何东西,在你自己的设备上读它,就是最该有的默认。
