1

我想阻止用户在 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。

感谢您的帮助。

4

3 回答 3

3

我(或任何客户)仍然可以使用任何数量的工具来解决这个问题(包括 99% 构建的浏览器中的内置调试器)——不值得混淆它。

如果您担心直接访问,请检查脚本中的 AJAX 请求。(仍然可以破解,但这是一个开始)。正如之前的答案中所提供的:

<?php

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

  /* rest of search.php */
于 2012-09-20T01:32:05.667 回答
0

好吧,把事情说清楚..

  1. 一旦它在客户端(浏览器)上,您就无法隐藏它。用户仍然可以在客户端返回下载或查看源代码。
  2. 混淆并不是真正需要的,因为你只是让事情变得复杂而不保护任何东西。
  3. 但是任何服务器端代码(PHP)都不会显示,因为它是由服务器端处理的,服务器只返回服务器端代码的执行结果。

如果您遇到问题,您可以做的是检查 $_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');
      }
    ?>
于 2012-09-20T01:38:18.273 回答
0

正如评论中所说,

我们如何防止用户直接打开 PHP url?

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

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

于 2012-09-20T01:43:34.320 回答