只能通过网站上的导航菜单访问网页

时间:2014-02-02 09:20:16

标签: javascript jquery

有什么方法可以确保我的网站的所有页面只能通过网站上提供的导航菜单访问,没有人可以使用地址栏访问该页面。

例如,假设我的网站位于http://www.foobar.com,并且网页有http://www.foobar.com/homehttp://www.foobar.com/contact等。有什么办法可以限制这些网页不被访问输入这些地址并仅通过我在我的网站上提供的导航?

3 个答案:

答案 0 :(得分:4)

嗯......您可以将所有数据编码为非人类可读形式(例如ROT 13),使用反CSRF样式的随机数保护对它的访问,并使用XMLHttpRequest加载它以便您可以对其进行解码在将其添加到页面之前使用JavaScript ...

...但是整个想法与网络的想法相反,并且真的是用户的敌意。

答案 1 :(得分:2)

我建议你使用以下方法:

  1. 在客户端附加click处理程序到每个导航菜单链接所在的位置 通过Javascript存储在cookie中的一些令牌值。
  2. 在服务器端检查访问者的cookie是否存在适当的 令牌以及检查其价值。
  3. 代码可能如下所示:

    HTML:

    <a href="..." class="nav-menu">...</a>
    

    JS:

    $(document).ready(function(){
        $('a.nav-menu').click(function(){
            // setCookie() is function that set Javascript cookie
            setCookie('mytoken', 'mytoken_value');
        });
    });
    

    PHP:

    if (isset($_COOKIE['mytoken']) && $_COOKIE['mytoken'] == 'mytoken_value') {
    ...
    }
    

答案 2 :(得分:1)

您可以使用具有不同隐藏输入值的每个导航菜单选项附加表单,并在您的其他页面上检查值,例如联系人。如果不存在帖子值,您可以将页面重定向回旧页面 但是这个想法不是用户友好的,因为用户习惯于直接导航到其他页面,这主要是由于历史记录中的浏览器站点建议,也是因为他们不想首先访问主页,因此需要记忆确切的站点。