不是每条链接都该对捡到它的人敞开。给某一个客户的报价、团队之外谁都不该看的草稿、只面向那十二位付过钱的人的下载——这个网址一旦存在,它就可能被转发、被截图、被贴进群聊,被某个你从没邀请过的东西收录。
密码保护链接会在目标前面立一道门:谁打开它,看到的都是密码输入框,而不是你的内容。再加上有效期,这道门在链接完成使命之后会干脆消失。两样东西各花十秒钟设置,而且都不要求对面那个人有账号。
它是怎么工作的
创建链接时你设一个密码。urlik 存的是它的哈希——不是密码本身,而是一个单向哈希值——所以存下来的东西没法还原成原文,拿到数据库的攻击者不行,我们自己也不行。访客打开链接会看到一个输入框;密码对,目标页打开,密码错,就打不开。整套机制就这么点内容,而它的简单恰恰就是重点。
有效期在旁边配合。你可以选一小时、一天、一周或一个月,时刻一到,链接就不再解析,而是回一个 410 Gone——这个 HTTP 状态码诚实地表达了“它曾经存在,现在是故意不存在了”,顺便也告诉搜索引擎把它丢掉,别再反复重试。
什么时候密码比其他所有方案都强
- 进行中的客户项目。希望有人评审、但不希望到处流传的预发布站点或方案草稿。
- 付费内容。该送到买家手里、而不是送给整个互联网的文件、录像或资料。
- 任何印出来的东西。海报上的二维码,路过的人人都能扫。把密码留在柜台后面,能进去的就只有你真正的顾客。
- 内部链接。那种网址能猜得到、落到外人手里会尴尬但不至于是灾难的看板或文档。
诚实说清它防得住什么
换成别的文章,这里就该继续卖了。我们把话摊开讲:链接上的密码是访问控制,不是保密。它挡得住随手的访问——被转发的消息、好奇的同事、爬虫。它不能让内容在任何密码学意义上成为秘密。
说具体点:目标网址以明文形式躺在我们的数据库里,因为服务器总得把你送过去。拿到密码的人可以把密码分享出去。而且这条链接只看守着门——如果目标本身是公开的,别人换条路走到那儿,照样长驱直入。在一个公开的 Google 文档前面加一条密码保护链接,等于什么也没保护;该改的是文档的共享设置。
如果你要的是真正的保密——连运行服务器的人都读不到内容——那链接密码就是选错了工具。请用安全投递:文件在你的浏览器里加密后才上传,密钥藏在网址中服务器永远收不到的那一段,而文件在被下载一次之后自动销毁。那是另一个量级的承诺,如何安全发送文件讲清了这条界线划在哪里。
怎么挑一个配得上的密码
密码就是全部的安全模型,所以:
- 别拿真密码来用。这是一个分享用的密码,不是你的账号密码。绝不要用同一串字符。
- 另走一条路发。密码和链接躺在同一封邮件里,等于什么也没防——一次转发,两样全丢。链接走邮件,密码走即时通讯或当面说。
- 让它难猜,但好念。三个不相干的词,胜过
Pass2026!——更长,而且在电话里口述也扛得住。 - 按收件人分组轮换密码,在事关重大时尤其如此。每个客户一条链接、各配各的密码,谁泄漏的一目了然,因为点击统计是分开的。
密码加有效期,比单用任何一个都强
组合起来,这东西才真正好用。密码限定的是谁,有效期限定的是多久。两者合在一起,就框住了泄漏所能造成的损失,因为下个月流进群聊的那个密码,打开的是一条已经不存在的链接。
一个挺好使的套路:链接在它所服务的那个截止日之后一周过期,密码走链接之外的渠道发送,每位收件人一条链接。真出了泄漏,你知道是哪一份,而且它会自己失效——不用留一个你迟早会忘掉的清理任务。
访客看到的是什么
一个朴素的输入框,页面上写明是哪家服务在问,但不透露目标的任何线索——密码输对之前,目标始终隐藏,这一点在网址本身就会泄底时格外重要(/acme-corp-acquisition-draft 还没等人进门就已经讲完了整个故事)。密码错了,页面会照实说,然后再问一次。过期了,它会说链接已过期,而不是假装它从未存在过——对于本来就有正当理由到访的人,这样不那么让人摸不着头脑。
还有一点值得知道:受保护的链接不会向社交爬虫提供富预览,所以把它贴进聊天窗口,不会把目标页的标题和配图泄漏到消息里。这是有意为之——一个会暴露密码所保护之物的预览,等于把密码作废了。
一句话总结
链接上的密码是一道门:便宜、即时、不用账号,而且对付“内容该给一部分人、不该给所有人”这种日常情形足够了。给它配上有效期,让泄漏也有个保质期;密码和链接走不同的渠道发;同时心里清楚,这是访问控制,不是加密。当你需要那个更硬的承诺时,请改用端到端加密——而如果你正在掂量短链接整体上有多值得信任,短链接安全吗讲的是这个问题的另一面。