假设我为包含机密商业信息的客户创建了一个微型网站。我们需要将其放置在客户可以访问的位置,以便他们批准发布。
如果我们将此微型网站置于登录后,我们保证没有人可以偶然发现内容并对其进行破坏。但是,如果我们将其发布到一个未公开的、未编制索引的目录,其名称与上述密码的“强度”相同,该怎么办?为了争论,“未公开和未索引”意味着它不会被手动或自动链接到/从任何地方,或被同一域上的任何网站搜索索引。它也不会放在它自己的子域中,因此 DNS 抓取不是问题。
我最初的直觉认为这只是默默无闻的安全性,并且由于有人可能会绊倒它,因此安全性要低得多。但是,仔细想想,我不太确定。以下是我的理解:
- 即使对密码和 URL 都使用字典弱的双字字符串,仍然有数十亿个可猜测的选项。将它放在 URL 中并不会神奇地减少该列表。
- 登录页面可以具有蛮力保护,因此攻击者可以乐观地进行 20 次猜测尝试。URL 猜测必须被服务器的 DoS 或垃圾邮件保护捕获,并且如果您预计会发生攻击,则可能允许产生 200 404 次猜测 - 对于数十亿选项仍然没有统计意义。
- 登录页面是从网站链接的——它是攻击者可以攻击的可见墙。这是证据表明存在值得攻击的东西。然而,猜测 URL 是盲目的。它需要在正确的域(和子域)上,并且相信即使经过数以万计的错误猜测,你仍然会发现一些东西。
- URL 更容易被外部索引/爬取。然而,大多数受人尊敬的蜘蛛不会“猜测”网站,它们只是跟随链接。恶意“猜测”蜘蛛将被与第 2 点相同的 DoS/垃圾邮件保护捕获。
据我所知,两者之间唯一有意义的区别是想象中的安心。URL 可能被绊倒的可能性让人感到紧张,而登录让事情变得安全,尽管根据上述几点它们看起来是可比的。不过,URL 选项仍然感觉应该不那么安全。我没有考虑什么?
编辑:出现了很多有效的人为错误问题。这个问题的灵感来自于一个客户端,该客户端实现了一定程度的防人安全 - 通过密钥卡、屏幕调光器、5 分钟睡眠超时、社交媒体停电等进行 vpn 登录。对于这个问题,请假设没有公共网络访问权限,也没有偶然的违规行为喜欢看肩膀或“哎呀!我发布了推特的链接!”。我正在寻找一个更系统的答案,或者至少比“人类搞砸”更令人满意的答案。
编辑 2:感谢您指出可能的重复. 恕我直言,我认为每个问题都有其价值。该问题专门解决了图像安全问题,并深入研究了保护和编码该数据的替代方法(例如 base64 编码)。这个问题更具体地解决了保密与默默无闻的概念,并将其应用于为什么登录优于独立于所讨论数据类型的 URI。此外,我认为那里接受的答案并没有像@SteveDL 下面的精彩答案那样深入或彻底地解释我的特定问题。