使用jQuery限制对网页的访问

时间:2011-09-09 07:45:10

标签: jquery webpage

有没有办法用jQuery限制对http://www.example.com/subpage等特定网页的访问? 我知道还有很多其他可行的方法可以通过PHP和.htaccess实现这一点,但在我们的例子中,我们无法访问.htaccess文件。但是安装了jQuery。

我正在考虑尝试阅读window.location.href并向网址添加哈希值。但是,如果用户查看相关页面的源代码,我不确定是否可以公开。

6 个答案:

答案 0 :(得分:2)

我实现了Felix Kling的想法并编写了一个node.js脚本来自动化该过程。基本上它将您的(原始)HTML页面和密码作为输入,并生成嵌入原始加密副本的HTML页面。当您浏览到此生成的HTML页面时,它会提示您输入密码以解锁它。

这只是一个概念证明,所以你需要做很多工作才能使这个生产准备就绪。例如,如果输入错误的密码,肯定会想要一些友好的错误消息。每次在网站上的页面之间移动时输入密码可能会非常恼人,因此您可以考虑将密码保存在cookie中或每次都在URL中传递密码。此外,按照目前的设计,您只能拥有一个人人共享的密码。这是一个可解决的问题,只需为每个唯一的用户名/密码对重新加密一次主密钥,并将所有数据放在网页中。

无论如何,here's a demo(密码是“ItWorks”)。我为工具on GitHub添加了代码。

为什么这种方法不是特别安全有很多原因,但是如果你真的关心安全性,那么你就可以通过.htaccess和脚本支持来进行网络托管了,对吗? :)

答案 1 :(得分:1)

在客户端限制访问是有风险的,并且可能有很多方法可以解决它。您可能无法访问.htaccess,但是您不能使用php吗?

不保证这个想法:

您需要使用javascript来加载您不会通过ajax显示的页面部分。如果不这样做,如果他们禁用了javascript,则可以轻松看到要阻止用户看到的页面部分。你当然可以根据页面需要有什么数据来有条件地执行ajax加载,以表明用户是真实的,但这很容易被欺骗。此时,您还必须与服务器通信,那么为什么不限制访问呢?

如果你只是担心保持愚蠢(即非开发者)的用户可能会有用。

答案 2 :(得分:1)

来自我的评论:

您可以使用Ajax加载页面的一部分,如@tandu suggests it,但将它们加密存储在服务器上。

在客户端,让用户输入密码并使用您用于解密接收数据的加密算法的JavaScript实现。只要确保你使用一些经过良好测试的实现,而不是自己创建一个!

这也可能不是很安全,但有两个好处:

  • 密码不包含在源代码中(普通或模糊)。
  • 直接访问通过Ajax加载的部分不会泄露任何信息(它们是加密的)。

缺点是:

  • 加密页面(部分)需要进行一些预处理(可以自动化,请参阅@Joe Cheng对您问题的评论)。
  • 客户端必须执行解密(可能会影响性能)。

此外,您必须确定解密是否成功。

答案 3 :(得分:0)

简答:不,你不能。

答案稍长:你的所有javascript都会发送给用户,看看。您无法隐藏任何源代码。使用PHP / htaccess,您的所有源代码都是隐藏的,因此无法告诉您如何处理数据。

答案 4 :(得分:0)

因为很多人已经说不了。我不妨用PHP发布这个答案。

如果仅包含这些文件,则可以在包含文件中使用define()。然后,您包含的文件将检查已定义的常量,如果未找到则立即退出。这样,您可以确保其余代码仅在include中解释。

如果我们只是谈论用户访问级别(即这些文件可能通过HTTP调用但在用户中受到限制,那么您必须使用sessions并为每个页面的用户设置适当的访问级别将检查并采取相应行动

答案 5 :(得分:0)

要在JavaScript中执行此操作(如您提到的那样使用jQuery),您只需在需要时检查password输入的值,并将其与预定义的进行比较密码。

免责声明我永远不会推荐这个。我甚至只是发布了一个答案,因为你已经明确表示用户是否可以看到来源并不重要。

话虽如此,假设一些HTML如下:

<input type="password" id="pass"> 
<input type="button" id="b" value="Login">
<span id="err"></span>

你可以使用类似的一些JS:

$("#b").click(function() {
    var password = "password";
    if($("#pass").val() !== password) {
        $("#err").text("Incorrect password");
    }
    else {
        $("#err").text("Password correct! Do whatever you need to do here.");   
    }
});

在行动here中查看它(也请注意查看密码是多么容易!)。