【发布时间】:2012-03-30 05:16:16
【问题描述】:
在我的search.php 页面上,用户可以按城市/位置搜索事物,通过 JQuery/AJAX 对名为 search_data.php 的页面进行搜索,并在 search.php 上返回结果。
现在这就是我正在做的事情:
在search.php 我有这个:
$_SESSION['verid'] = randomid(12);
$_SESSION['verkey'] == randomid(12);
randomid 是一个生成 12 个随机字符的函数。这两个会话变量与 jquery $.post 请求一起作为 javascript 变量(名为“vuid”和“vukid”)发送
在search_data.php 我有这个:
if ($_POST['vuid'] != $_SESSION['verid']) {
header('Location: http://mysite.com/');
die();
} else {
if ($_POST['vukid'] != $_SESSION['verkey']) {
header('Location: http://mysite.com/');
die();
} else {
//both keys correct. process Jquery data.
}
使用这种方法,它会阻止某人手动浏览到 search_data.php 尝试做恶意事情(我认为?),它只会允许 Jquery 访问它。
我的问题是,这里有没有我没有看到的某种“洞”?这是保护这类网页的好方法吗?
【问题讨论】:
-
客户端可以访问您使用 javascript 访问的所有内容。如果您使用 javascript 获取会话变量并传递它,那么客户端也可以。如果您正在寻找由 php 设置的会话变量,客户端可以从具有相同会话变量的页面向您的服务器发送请求。他们甚至不必知道会话变量。所有这一切都是为了防止用户使用不同域上的服务器端代码发布到您的 .php 文件。他们仍然可以通过您的域执行此操作。
标签: php ajax security access-control