阻止非JavaScript用户访问

时间:2013-08-29 19:04:02

标签: php javascript

我有一个用PHP,HTML编写的网页,首先是JavaScript。我想阻止(拒绝访问页面并显示消息)访问我的网页,以获取未在浏览器设置中启用JavaScript或不支持JavaScript的人,因为我的页面没有正确显示并且有很多错误(也是安全漏洞!)。我知道有可能在HTML中编写<noscript>语句,但是除了这个文本之外的其他内容是显示的,它也是可移动的(例如,通过Inspector函数是浏览器),我说没有JS我的页面包含错误。所以,我的问题是:有没有办法阻止用户使用PHP不支持JS访问我的页面?欢迎任何其他建议:)

*阻止访问意味着 - 拒绝访问主页并显示消息

4 个答案:

答案 0 :(得分:4)

这是不可能以真正安全的方式进行的。

是的,您可以只提供一个空白的页面,然后使用JS实际加载内容(例如通过AJAX),但问题是JS必须从某个地方加载该代码,攻击者也可以这样做。但这是真正的问题:

用户可以控制他们的浏览器。 JS是客户端代码。攻击者可能选择运行,不运行或更改然后运行JS。攻击者甚至可以运行自己的JS来调用或替换你的函数。默认情况下,任何依赖于JS的安全性都会被破坏。

因此,虽然您可以(并且人们)在您的页面上显示一条警告消息,然后由JS代码隐藏,或使用JS加载您的内容,但它将永远不会安全。

答案 1 :(得分:1)

您可以创建一个“子”页面,通过AJAX加载其整个内容。这不会阻止人们直接点击您的URL。不要相信客户。

答案 2 :(得分:1)

如果你真的真的需要这个。我说三个真的是因为我认为大多数时候你可以选择替代它。

使用JavaScript设置cookie并将其与您的请求一起传递给服务器,并使用传递的请求验证服务器上的cookie。如果您能够验证cookie您的客户端没有其他JS。

更好的方法是从单点重定向js和非js用户。在您的index.html文件中说,您有javascript代码,可以将您的客户或访问者重定向到不同的网址。这样你知道那些用户启用了js,否则他们就不会被重定向。

答案 3 :(得分:0)

其他答案和评论已经包含很多细节,说明为什么你真的不能技术上阻止使用Javascript访问,但是,只有在启用JS时才能做一些简单的解决方法就是调用DOM加载后的JS函数:

  <script type="text/javascript">
    window.onload = do_something();
  </script>
</body>
</html>
然后,do_something()可以包括简单的事情,比如切换块元素可见性,例如隐藏非JS消息,再加上启动AJAX加载器,或者从上面已经建议的东西做其他事情。