以下是我作为AJAX脚本的一部分使用的javascript片段。如何防止直接访问user_back_end_friends.php?我不希望人们能够访问domain.com/user_back_end_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>
这是我发现但不确定如何使用上面的javascript代码实现它:
我在我需要调用它的页面中使用它:
$included=1;include("user_back_end_friends.php");
当我必须阻止直接访问时,我使用:
if(!$included){ die("Error"); }
但是如何在我的javascript代码中添加这个$ include部分脚本?
答案 0 :(得分:11)
保护javascript代码毫无意义,您只需要保护服务器端代码。
无论如何,我认为你的方法不正确;如果您已经有一个登录用户/用户ID,我只会使用会话中的用户ID而不是javascript提供的用户ID。这样,任何人都无法篡改它。
所以你可以用:
开始你的页面session_start();
if (isset($_SESSION['user_id'))
{
// do stuff with the user ID
}
else
{
// display error message?
}
答案 1 :(得分:0)
根据网络的性质,您无法完全阻止对此脚本的访问。
您可以检查引荐来源信息,输入验证,您可以在子页面上检查的父页面上创建会话变量。
答案 2 :(得分:0)
我做了以下事情。请注意,这不是最安全的,正如其他答案所提到的,您无法完全阻止对此脚本的访问(提供了一个简单的旁路链接),但为了我的简单目的,这非常有用 -
define('_REFERURL', 'http://www.example.com'); // This is the full URL of your domain that will be calling your PHP script(s)
然后创建一个检查引用URL(应该来自您的域)的函数
function allow_user()
{
if ($_SERVER['HTTP_REFERER'] == _REFERURL)
{
return true;
}
else
{
return false;
}
}
使用:
if (allow_user())
{
// Do things
}
else
{
// Alert, direct access attempted
}