3

Below is a javascript snippet that I am using as part of a AJAX script. How do I prevent user_back_end_friends.php from being accessed directly? I don't want people to be able to go to domain.com/user_back_end_friends.php and see a list of friends.

Javascript Code:

<script type="text/javascript">
    $(document).ready(function() {
        $("#user_friends").tokenInput("/user_back_end_friends.php", {
            theme: "sometheme", userid: "<?php echo $id; ?>"
        });
    });
</script>

This is what I found but not sure how to implement it with the javascript code above:

I use this in the page I need to call it in:

$included=1;include("user_back_end_friends.php");

When I have to prevent direct access I use:

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

But how do I add this $included part of the script in my javascript code?

4

3 回答 3

11

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

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

所以你可以开始你的页面:

session_start();
if (isset($_SESSION['user_id'))
{
  // do stuff with the user ID
}
else
{
  // display error message?
}
于 2012-05-15T01:59:22.033 回答
0

由于网络的本质,您不能完全阻止对该脚本的访问。

您可以检查推荐人信息、输入验证,您可以在父页面上创建一个会话变量,并在子页面上进行检查。

于 2012-05-15T02:00:31.487 回答
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
}

轻松通过:http ://www.datatrendsoftware.com/spoof.html

于 2012-05-15T02:08:28.300 回答