0

好的,所以基本上我已经整理了一个安全性非常低的登录页面(javascript用户名和密码),这没什么大不了的,因为它并没有真正保护任何东西,我只是为我的年轻人制作了一个登录页面教会网站查看和学习主日学资料。我想要的是让它你不能直接在你的“个人资料”中输入 html 或添加书签,我希望他们必须使用 javascript 登录。例如,脚本会将 bob 定向到他的bob.html 中的“个人资料”,但我只想在 bob.html 来自 login.html 的情况下才转到 bob.html,有没有办法在不变得非常复杂的情况下做到这一点?我期待没有,但我想我还是会问。

4

3 回答 3

0

如果不涉及服务器端编程,您将不得不使用简单的 JavaScript 重定向,它甚至不被视为“低级”安全性,而是“非级”安全性:)

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

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

if ((document.referrer).indexOf('login.html') > 0 && username=='someone' && password=='pass') {do stuff} else {用户没有从 login.html 到达或用户名是错误或密码错误}

于 2013-01-21T03:40:57.530 回答
0

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

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

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

于 2013-01-21T04:26:21.900 回答
0

多种方案是可能的,例如上面 jfriend00 提出的方案。

您还可以使用滚动 URL。

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

很容易看出如果有人将此链接添加为书签会发生什么。他们的书签最多只能工作一分钟。

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

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

希望这可以帮助。

于 2013-01-21T05:10:37.953 回答