阻止用户在Javascript中直接看到PHP url

时间:2012-09-20 01:26:40

标签: php javascript

我想阻止用户在Javascript中直接看到PHP URL。 示例:

{
$.ajax(
{
    type: "POST",
    url: "search.php",
    data: dataString,
    cache: false,
    success: function(html)
    {
        $("#display").html(html).show();
    }
});
}return false;

当他/她查看我的页面来源时,是否有可能或以任何方式阻止用户看到php URL?有时用户可能会尝试直接打开php url。

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

我(或任何客户端)仍然可以使用任意数量的工具来解决它(包括在99%的浏览器中构建的内置调试器) - 不值得对它进行模糊处理。

如果您担心直接访问,请在脚本中检查an AJAX request。 (仍然是黑客,但这是一个开始)。正如previous answer

中所提供的那样
<?php

  $isAjax = isset($_SERVER['HTTP_X_REQUESTED_WITH'])
         && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest';
  if (!$isAjax) die('Unauthorized access');

  /* rest of search.php */

答案 1 :(得分:0)

好的事情要清楚......

  1. 一旦它在客户端(浏览器),你无法隐藏它。用户仍然可以下载或查看源客户端返回。
  2. 实际上并不需要混淆,因为你只是让事情变得复杂而没有保护任何东西。
  3. 但是服务器端代码(PHP)的任何内容都不会显示,因为它由服务器端处理,服务器只返回服务器端代码的执行结果。
  4. 如果您遇到问题,您可以做的是检查$ _POST和$ _GET参数是否在到达您的PHP代码时有效,从而使每个POST和GET请求有效且安全。它有点像这样

    <?php
      if(isset($_POST['username']) && isset($_POST['password'])){
        //everything seems fine
        echo 'ok';
      }
      else{
      //someone is doing a direct acess
         header('index.php');
      }
    ?>
    

    或检查会话以仅为登录用户保护您的网页

      <?php
          if(isset($_SESSION['userid'])){
            //everything seems fine
            echo 'ok';
          }
          else{
          //someone is doing a direct acess
             header('index.php');
          }
        ?>
    

答案 2 :(得分:0)

如评论中所述,

  

我们如何阻止用户直接打开PHP网址?

你应该在php中创建一个非常长的随机字符串(令牌)的会话,并将其传递给js ajax函数,以便它将令牌与ajax请求一起发送。在服务器端,您可以检查是否生成了相同的令牌。您可能希望尽快使令牌过期。

我不知道,如果它是标准的方式,但可以为你提供一个开始。