0

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

*阻止访问方式-拒绝访问主页并显示消息

4

4 回答 4

4

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

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

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

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

于 2013-08-29T19:08:45.013 回答
1

You can make a "sub" page that loads its entire content via AJAX. This will not stop people from hitting your URLS directly though. Don't trust the client.

于 2013-08-29T19:07:48.797 回答
1

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

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

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

于 2013-08-29T19:24:53.283 回答
0

其他答案和评论已经包含很多关于为什么你真的不能在技术上阻止使用 Javascript 访问的详细信息,但是,一个简单的解决方法是仅在启用 JS 时执行某些操作,即在 DOM 加载后调用 JS 函数:

  <script type="text/javascript">
    window.onload = do_something();
  </script>
</body>
</html>

然后 do_something() 可以包括简单的事情,比如切换块元素的可见性,例如隐藏非 JS 消息,加上启动 AJAX 加载器或从上面已经建议的东西中做其他事情。

于 2013-08-29T19:23:18.147 回答