背景
我正在根据自己的需要开发一个应用程序,其中包含一些非常轻量级的框架。我不想花时间在用户偏好、登录等上。除了我,没有人会使用它。
我的问题
假设我希望在访问此地址时能够在我的数据库中添加或删除任何内容:
http://www.example.com/?secret=eccbc87e4b5ce2fe28308fd9f2a7baf3
没有登录,只有这个地址。那有多安全?如果它不安全,那么什么是一个好的简单解决方案?
我的想法
- 没有人能猜出那把秘钥。
- 如果没有链接,机器人能查到吗?
背景
我正在根据自己的需要开发一个应用程序,其中包含一些非常轻量级的框架。我不想花时间在用户偏好、登录等上。除了我,没有人会使用它。
我的问题
假设我希望在访问此地址时能够在我的数据库中添加或删除任何内容:
http://www.example.com/?secret=eccbc87e4b5ce2fe28308fd9f2a7baf3
没有登录,只有这个地址。那有多安全?如果它不安全,那么什么是一个好的简单解决方案?
我的想法
如果它不通过 SSL,那么它也可以被嗅探。如果您在公共 wifi 上更新,任何人都可以看到价值。尽管不太可能有人会嗅探您的网站
如果这只是为了自己,那应该没问题。尚未提及的一个警告 - 确保您没有将其他网站的内容嵌入到您的页面中,否则他们会在他们的 Referer 标头中看到您的神奇价值。
你的想法是对的。所以不要在公共计算机上为 URL 添加书签 ;-)
如果它是 MD5 或其他大文本字符串取决于您...
要回答帖子标题“GET 变量对于传输秘密是否安全?”中的问题,答案是否定的(取决于您所说的“安全”)。正如一些人所指出的,虽然唯一的 URI 可能无法猜到,但如果某人在网络上的适当位置(咖啡店、室友、图书馆、大学、ISP 等),他们可能会找到唯一的 URI。
即使使用了 SSL (HTTPS),SSL 中也存在一些弱点,这些弱点仍可能将您的流量泄露给适当定位的攻击者。参见 SSLStrip [0]、BEAST 攻击 [1] 和最近的 CRIME [2] 以及其他。
真正的困境是你愿意承担多少风险。如果您使用 URI 来查看小猫的图像,那么您可能需要接受风险。但是,如果您使用它来存储您的信用卡详细信息,那么您可能不想接受这种风险。
除了数据包嗅探之外,还有其他方式可以揭示您唯一的“秘密”URI。另一种可能显示的方式是,如果您从该“秘密”页面链接到第三方站点并单击该链接,则 URI 可能会在 HTTP 的“引用者”标头中发送。
[0] http://www.thoughtcrime.org/software/sslstrip/
[2] http://arstechnica.com/security/2012/09/many-ways-to-break-ssl-with-crime-attacks-experts-warn/
如果您将它放在互联网上的任何公共场所,机器人就会找到它。在知道 URL 并为您的站点编写一个指定的小型机器人之后,有人可能只是用彩虹表迭代所有 md5。如果它只是为了一个小的管理,那没关系,但是放一些其他的值来检查它是危险的。也许md5和sha512一样。那是相当安全的。