所以我会事先说出来,显然我知道这实际上不是安全,不要打扰我。我只是从懒惰的角度对这个问题感兴趣。
我有一个网站,其中包含一些我想要“隐藏”给公众的信息。没有什么重要或脆弱的;我真的不想让人们找到它并弄乱它。我已经有一个robots.txt文件,不允许所有抓取。页面上没有链接(或者没有其他网站与此链接的链接)。
example.com会将您带到“您不被允许访问”页面,而example.com?real=fun实际上会向您提供内容。除非查询键/值对正确,否则PHP实际上不会运行页面。因此,我认为没有人会偶然发现这个页面,以及他们做了什么,他们将无法进入内容,这是否合理?
是的,我很懒,但我还是想知道。
•编辑• 我不是在寻找“怎么做”。我已经做到了。正确的答案将解决是否有其他基本方式让一个人进入使用此技术的页面。
答案 0 :(得分:2)
除了输入密码之外,它肯定是一种更好的“隐藏”方式。受密码保护的网站显然意味着隐藏在围栏后面的东西,而秘密查询字符串基本上没有任何东西。
另一方面,如果秘密字符串泄漏,那么您的安全系统就会被破坏。如果提供了秘密查询,我建议加倍关闭并触发常规登录页面。然后,您可以在不必将查询字符串保留在URL中的情况下工作(如果链接到外部的任何内容,则不会显示在其他站点的引用日志中)。
通过这种方式,您可以获得所需登录的安全性,并且具有额外的安全性,甚至没有明显的面对面“这里有安全的内容”。
答案 1 :(得分:2)
“合理”由上下文定义。新奇页面背后没有什么真正敏感的?当然。请记住,如果您曾向任何人发送“隐藏”链接,他们可以轻松地将其发布到某个地方的某个IRC聊天室,或者有人可以在您远离您的时候浏览您的浏览器历史记录键盘。请记住,任何了解http://example.com/index.php?real=fun的人都可以到达那里。 “没有人可能知道”一旦他们知道就不会帮助你。
现在,如果您真的对安全感兴趣,可以在某个地方的数据库中设置一个临时ID值,随机生成6或8个字符的哈希值和一个到期日期(例如,一天)。发送电子邮件给朋友example.com/index.php?real=8AC02F,他可以在一天左右的时间内访问该内容。编写密码脚本以生成哈希和到期日期并将其存储在数据库中。
不要忘记删除过期哈希的cron脚本,你不想搞得一团糟。
答案 2 :(得分:1)
是的,假设他们无法访问内容是合理的,因为Apache会看到index.php请求并简单地处理资源。他们无法简单地猜测你在后端服务器中硬编码的内容,除非它像某个共享的虚拟主机和服务器上的其他用户可以看到你目录的内容。
将此内容添加到index.php文件的顶部,以获取www.example.com
的根目录if (empty($_GET))
exit("nothing to see here");
elseif ($_GET['real'] != 'fun')
exit("nothing to see here");
答案 3 :(得分:1)
你依靠默默无闻的安全。它在一定程度上起作用,但你不应指望它。你的问题的答案是“是”它是合理的,但不要在生产中依赖它。
执行此操作的最佳方法是使用Basic Http Auth仅允许具有登录凭据的人访问页面(S)。
稍微懒惰的方式是显示没有信息的表单,他们必须输入一些随机字符串并提交它。如果字符串是正确的,它将在服务器上设置一个允许他们访问页面的会话。
答案 4 :(得分:1)
如果您不是非常关注安全问题而只是试图让人们离开几页,那么您有一些选择。再说一次,为了澄清,我不会仅仅依靠这些想法来实现银行业务的安全......
答案 5 :(得分:0)
你问这个解决方案是否“合理”。因为你显然不是指“安全”,所以你不清楚你做什么意味着什么。我猜你的意思是“可行且易于实施”,在这种情况下答案是是。但请随时编辑您的问题以使其更清晰。