网站提醒

上周三凌晨两点,网站提醒手机突然弹出一条提醒:“您访问的网站提醒网站证书已过期。”我盯着屏幕愣了几秒——那是网站提醒我自己搭的一个小博客,平时根本没人看。网站提醒爬起来开电脑,网站提醒发现是网站提醒Let's Encrypt的自动续期脚本挂了。折腾到三点半才修好。网站提醒这事让我意识到,网站提醒网站提醒这东西,网站提醒平时不起眼,网站提醒关键时刻真能救命。网站提醒

很多人对浏览器弹出的网站提醒安全警告习惯性点“继续访问”。Chrome那个红色三角警告页,网站提醒十个人里有八个直接忽略。网站提醒我做过一个小范围测试,网站提醒拿自签名证书的页面给同事看,六个人里只有一个人问“这证书怎么回事”。剩下五个说“能打开就行”。这种心态放在个人博客上无所谓,但如果是网银、公司OA系统,问题就大了。中间人攻击最喜欢这种用户。

证书提醒只是最基础的一类。网站还会通过邮件、短信、站内通知发各种提醒。我注册过一个小众论坛,某天收到邮件说“您的账户在异地登录”。点进去一看,登录地点是乌克兰。赶紧改密码,发现数据库早就被拖了。论坛管理员后来发公告说,他们其实三天前就检测到异常,但通知邮件被大部分用户当垃圾邮件过滤了。这事儿怪谁?用户没看邮件有责任,但网站把安全提醒做得跟营销邮件一个德行,也是够呛。

我自己运营网站这些年,踩过不少提醒相关的坑。早期用WordPress,插件更新提醒天天弹,多到麻木。后来干脆关掉所有通知,结果某次核心安全更新没打,网站被挂马,首页被改成土耳其语赌博广告。Google搜“网站被黑”搜到我自己的站,那感觉真是一言难尽。现在我的做法是:安全类提醒全开,功能更新类提醒每周汇总一次。分级处理,别让重要提醒淹没在噪音里。

浏览器厂商在这块做得越来越细。Firefox现在会明确告诉你“此网站试图安装附加组件”,而不是笼统的“此页面包含不安全内容”。Chrome对混合内容(HTTPS页面加载HTTP资源)的警告也具体到了哪个脚本、哪个图片。这种精确提醒比吓唬人的大红屏有用得多。但有个问题:普通用户看不懂“混合内容”是什么意思。我表弟上次问我,他打开一个购物网站,地址栏锁图标有个黄色三角,是不是网站有毒。我解释半天他才明白,只是网站有个图标没走HTTPS。

网站提醒的设计得考虑接收者的认知水平。给程序员看的可以写“SSL_ERROR_BAD_CERT_DOMAIN”,给普通用户看的得说“这个网站的身份证明有问题,可能不是它自称的那个网站”。我见过最离谱的提醒是某银行APP,弹窗写“安全控件加载失败,错误码0x80040154”。我打电话问客服,客服说“您重启手机试试”。这种提醒等于没提醒。

还有一类提醒容易被忽视:网站自己发的“您已长时间未修改密码”。很多网站强制90天改密码,用户就改成Password1、Password2、Password3。这种提醒反而降低了安全性。NIST(美国国家标准与技术研究院)现在建议取消强制定期改密码,除非有泄露证据。提醒应该基于风险,而不是日历。

我现在的习惯是,看到任何网站提醒先停三秒。问自己:这提醒是真的吗?来源可靠吗?点进去的链接域名对吗?上个月收到一封“Apple ID异常登录”的邮件,发件人显示Apple Support,但鼠标悬停看真实地址是apple-id-verify.xyz。没点,直接删了。后来确认是钓鱼邮件。网站提醒是把双刃剑,用好了是安全网,用不好就是攻击者的诱饵。

凌晨三点半修好博客后,我把提醒方式改了。证书到期前30天开始,每天发一封邮件到我常用邮箱。同时手机日历加了个提前一周的提醒。双重保险。网站提醒这事,说到底就是:别忽略,别全信,自己心里得有根弦。