如何防止直接访问PHP页面?
下面是我作为AJAX脚本的一部分使用的javascript片段。如何防止直接访问user_back_end_friends.php?我不希望人们能够访问domain.com/user\u back\u end\u friends.php查看朋友列表 Javascript代码:如何防止直接访问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(
<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
}