我的索引页面(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()
加载,如果没有,则停止加载页面或执行脚本?
答案 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的方法。