如何防止直接访问PHP页面?

如何防止直接访问PHP页面?,php,javascript,ajax,token,Php,Javascript,Ajax,Token,下面是我作为AJAX脚本的一部分使用的javascript片段。如何防止直接访问user_back_end_friends.php?我不希望人们能够访问domain.com/user\u back\u end\u friends.php查看朋友列表 Javascript代码: <script type="text/javascript"> $(document).ready(function() { $("#user_friends").tokenInput(

下面是我作为AJAX脚本的一部分使用的javascript片段。如何防止直接访问user_back_end_friends.php?我不希望人们能够访问domain.com/user\u back\u end\u friends.php查看朋友列表

Javascript代码:

<script type="text/javascript">
    $(document).ready(function() {
        $("#user_friends").tokenInput("/user_back_end_friends.php", {
            theme: "sometheme", userid: "<?php echo $id; ?>"
        });
    });
</script>
当我必须阻止直接访问时,我使用:

if(!$included){ die("Error"); }

但是如何在我的javascript代码中添加脚本的$include部分?

保护javascript代码没有意义,您只需要保护服务器端代码

无论如何,我认为你的方法是不对的;如果您已经有一个登录用户/a用户ID,我将只使用会话中的用户ID,而不是javascript提供的用户ID。那样的话,任何人都不可能篡改它

因此,您可以从以下内容开始您的页面:

session_start();
if (isset($_SESSION['user_id'))
{
  // do stuff with the user ID
}
else
{
  // display error message?
}

由于web的本质,您无法完全阻止对此脚本的访问


您可以检查引用者信息,输入验证,您可以在父页面上创建一个会话变量,该变量在子页面上被选中。

我已经完成了以下操作。请注意,这并不是最安全的,正如其他答案所提到的,您不能完全阻止对此脚本的访问(提供了指向easy bypass的链接),但出于我的简单目的,这非常有效-

define('_REFERURL',              'http://www.example.com');            // This is the full URL of your domain that will be calling your PHP script(s)
然后创建一个检查引用URL(应该来自您的域)的函数

使用:


简单的附带说明:

我不知道include技巧将如何工作,因为对
user\u back\u end\u friends.php的jQuery调用是一个新的调用,并且不会包含来自当前环境的任何变量。我不知道有什么简单的方法可以阻止某人直接访问
user\u back\u end\u friends.php
,除非检查请求的来源-在这种情况下应该是localhost。我的脚本可能重复显示用户朋友及其id。因此,有足够技术的人会查看源代码,可能会尝试domain.com/user\u back\u end\u friends.php并查看他们朋友的用户ID。我知道这没什么大不了的,但我不想让任何人到处窥探。谢谢。对不起,如果我没有看到它,因为我是新的PHP。你的意思是在使用javascript的页面上使用它,还是在用户_back_end_friends.php页面上使用它?@ariel在后端。现在,您正在将用户ID从javascript发送到php脚本。如果您已经有一个已登录的用户,您可以完全跳过该操作,只需使用会话中已有的服务器端用户ID即可。这样,用户ID就不再是php脚本的输入,脚本只是从登录的用户那里获取,没有人可以向脚本提供其他值。
define('_REFERURL',              'http://www.example.com');            // This is the full URL of your domain that will be calling your PHP script(s)
function allow_user()
{
        if ($_SERVER['HTTP_REFERER'] == _REFERURL)
        {
                return true;
        }
        else
        {
                return false;
        }
}
if (allow_user())
{
     // Do things
}
else
{
     // Alert, direct access attempted
}