阻止html页面直接访问,但可以从链接中查看?

时间:2013-01-21 03:37:23

标签: javascript html redirect

好的,所以基本上我把一个非常低的安全日志页面(javascript用户名和密码)放在一起这不是什么大问题,因为它没有任何保护它的东西,我只是做了一个登录页面青年在我的教会网站上查看和研究星期日学校的材料。我想要的是这样做,所以你不能直接输入你的“个人资料”或书签它,我希望他们必须使用javascript登录。例如,脚本将指向bob到他的bob.html上的“个人资料”,但是我只想进入bob.html,只要它来自login.html,有没有办法做到这一点而不会变得非常复杂?我期待没有,但我想我还是会问。

3 个答案:

答案 0 :(得分:0)

如果不涉及服务器端编程,则必须使用简单的JavaScript重定向,该重定向甚至不被认为是低级别的#34;安全,但作为一个非水平的"安全:)

无论如何,您可以使用document.referrer检查引荐来源,并在不正确时重定向到主页面,请记住这很容易被用户操作。

有关document.referrer的更多详细信息,请访问http://www.w3schools.com/jsref/prop_doc_referrer.asp

if((document.referrer).indexOf(' login.html')> 0&& username =='某人'&& password ==& #39;传递'){do stuff} else {用户未从login.html到达或用户名错误或密码错误}

答案 1 :(得分:0)

如果这全部来自客户端javascript,那么你就无法做任何真正安全的事情。我假设你知道这一点。

但是,通过让登录页面中的链接设置一个非常短的过期cookie(如1-5分钟),然后转到配置文件页面并拥有配置文件,您可以为临时查看器创建一个轻微的障碍来直接访问页面默认隐藏所有配置文件内容(通过CSS规则)。然后,您的javascript可以检查加载时是否存在cookie,如果是,则显示内容。

如果观看者试图直接进入个人资料页面,则该Cookie将不存在,并且javascript将不会显示页面内容。显然,内容仍然存在于页面中,因此任何了解网页如何工作的查看者仍然可以通过其他方式查看内容,但默认情况下不会在浏览器中显示。

答案 2 :(得分:0)

可能有多种方案,例如上面jfriend00提供的方案。

您也可以使用滚动网址。

说出您的个人资料页面位于http://example.com/profile/foo。将其更改为http://example.com/profile/foo?time=yyMMddhhmm,其中yyMMdd表示当前日期,hhmm表示当前服务器时间。如果时间不匹配,请确保服务器拒绝提供此页面。

如果有人为此链接添加书签,很容易看到会发生什么。他们的书签最多可以使用一分钟。

不幸的是,页面上的链接也会在一分钟后到期。您可以解决每分钟大致更新URL的问题,但它并不像看起来那么简单。您需要考虑到用户计算机上的时间可能与服务器时间不同这一事实。

另一种方法是使用session cookie。会话cookie在浏览器关闭之前是好的。它们会在您关闭时自动过期。这是jfriend00原始答案的变体。

希望这有帮助。