使用jQuery的.load函数加载页面时保护php

时间:2012-03-08 15:24:02

标签: php jquery

我的索引页面(index.php?profile = profilename_here)以正常方式使用jQuery的load()函数将内容加载到div中,并且一切正常。

$().ready(function() {
    $('#details').load('pages/sidebar/details.php?profile=<?PHP echo $profile;?>').fadeIn(2000);
});

然后在我的页面/侧栏/ details.php中我有MySQL查询。

$result = mysql_query("SELECT * FROM public_profile WHERE username='$profile'") or die(mysql_error());  

所有的PHP内容都是安全的,我正在清理所有varibales,因为我应该....但如果有人要去'pages / sidebar / details.php?profile ='并更改配置文件名称,他们将是提出其他人的细节。

是否可以检查页面是否由.load()加载,如果没有,则停止加载页面或执行脚本?

1 个答案:

答案 0 :(得分:3)

如果您只想在使用ajax使用

请求页面时运行代码
if ($_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest') { 
    /* run this if requested by ajax */ 
}

遗憾的是,由于任何人都可以使用像firebug这样的开发工具来更改代码中的URL,因此不会使其更加安全。如果您只想让当前用户看到自己的个人资料,您可以$profile$_SESSION方式存储{{1}}他们无法直接访问网址参数。

查看OWASP's SQL Injection Prevention Cheatsheet有关清理数据的方法,尽管我认为没有任何特定于PHP的方法。