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

Block html page from direct access but viewable from link?

本文关键字:链接 html 阻止 访问      更新时间:2023-09-26

好的,所以基本上我已经把一个非常低安全性的登录页面(javascript用户名和密码),这不是什么大问题,因为它没有真正保护的东西,我只是在我的教会网站上为年轻人制作了一个登录页面,以查看和学习主日学的材料。我想要的是使它,所以你不能在直接的html输入到你的"个人资料"或书签它,我希望他们必须使用javascript登录。例如,脚本将引导bob到他的"配置文件"bob.html,但我想只去bob.html只有当它来自login.html,有没有办法做到这一点,而不会变得非常复杂?

如果不涉及服务器端编程,则必须使用简单的JavaScript重定向,这甚至不被视为"低级"安全,而是作为"非级别"安全:)

无论如何,你可以用文档检查推荐人。当它不正确的时候,把它转到主页面,记住这是很容易被用户操作的。

文档的更多细节。参考文献可在此找到http://www.w3schools.com/jsref/prop_doc_referrer.asp

if ((document.referrer).indexOf('login.html')> 0 &&用户名= =‘有人’,,Password =='pass') {do stuff} else {user未从login.html到达或用户名错误或密码错误}

如果这些都是来自客户端javascript,那么你就不能做任何真正安全的事情。我想你已经知道了。

但是,你可以通过从登录页面设置一个非常短的过期cookie(如1-5分钟)的链接,为休闲浏览者直接访问创建一个轻微的障碍,然后转到个人资料页面,并在默认情况下隐藏所有个人资料内容(通过CSS规则)。然后,你的javascript可以在加载时检查cookie是否存在,如果存在,则显示内容。

如果查看者试图直接进入配置文件页面,cookie将不存在,页面内容将不会被javascript显示。显然,内容仍然存在于页面中,所以任何了解网页工作原理的浏览者仍然可以通过其他方式看到内容,但它不会默认显示在浏览器中。

可以采用多种方案,如jfriend00给出的方案。

你也可以使用滚动url

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

很容易看到如果有人收藏这个链接会发生什么。他们的书签最多只能工作一分钟。

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

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