二维码的安全风险,以及如何核验一个码
二维码是一个你读不出来的链接。这就是全部的攻击面。
四种真实风险
| 风险 | 运作方式 | 要检查什么 |
|---|---|---|
| 钓鱼(quishing) | 码指向仿冒的登录页 | 逐字符读域名 |
| 覆盖贴纸 | 在真码上贴一张假码 | 留意翘起的边缘或印刷质感不一致 |
| 支付跳转 | 支付点上的码被替换 | 与商户自己的展示内容核对 |
| 恶意软件投放 | 码引导下载 APK 或描述文件 | 绝不要通过二维码安装应用 |
punycode 与仿冒域名
某些非拉丁字母表中的字符,与拉丁字母看起来完全一样。用这些字符注册的域名会显示成你熟悉的那个单词,实际却解析到别处。浏览器会把这类域名显示成 Punycode 形式——也就是以 `xn--` 开头的那种——正是为了让它们一眼就能看出来。
如果一个网址的主机名以 `xn--` 开头,在证明它是无害的之前,都应当当作可疑对象。面向消费者的普通链接没有正当的常见理由长成这样。
真正有用的习惯
- 看域名,不看页面设计。一个完美的登录页复制品成本很低。
- 绝不在通过公共场所扫码进入的页面上输入密码。
- 优先用你自己打开的支付应用,而不是一个承诺打折的码。
- 餐馆菜单的话,索要银行卡信息的码不是菜单。
常见问题
扫二维码本身会安装恶意软件吗?
不会。二维码只承载文本。风险在于文本在你操作之后做了什么——打开恶意页面或安装下载的文件都需要你确认。
什么是 punycode 域名?
用非 ASCII 字符写成的域名,浏览器显示为 `xn--` 加一串编码。它可被用来模仿熟悉的品牌名。
扫海报上的二维码安全吗?
扫描是安全的。在输入任何内容之前,确认域名与预期的机构相符,并对任何索要付款或凭据的码保持警惕。