2012-03-08 89 views
1

我的索引頁(index.php?profile = profilename_here)以正常方式使用jQuery的load()函數將內容加載到div中,並且所有工作都正常。當頁面加載jQuery的.load函數時保護php

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

然後在我的網頁/ sidebar/details.php我有MySQL查詢。

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

所有PHP的東西是安全的,我殺毒所有varibales我應該....但如果有人是去「頁/側邊欄/ details.php?輪廓=」和更改配置文件名字他們將提出其他人的細節。

是否可以通過​​來檢查頁面是否被加載,如果沒有,是否阻止加載頁面或執行腳本?

+0

也許你可以使用會話,讓你的details.php知道你是否被認證爲配置文件的所有者? – Damp 2012-03-08 15:27:01

+0

這些是公共頁面,沒有人登錄查看這些詳細信息 – 2012-03-08 15:27:51

+2

如果配置文件是公開的,並且您不必登錄查看它們,爲什麼它們提取其他配置文件會影響它? – jprofitt 2012-03-08 15:29:20

回答

3

如果你只想要運行的代碼時,就要求用AJAX使用

if ($_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest') { 
    /* run this if requested by ajax */ 
} 

頁遺憾的是,這並不使它更安全,因爲任何人都可以使用類似Firebug的開發工具來更改URL中代碼。如果您只希望當前用戶查看自己的配置文件,則可以將$profile存儲在$_SESSION中,這樣他們就無法直接訪問URL參數。

檢查出OWASP's SQL Injection Prevention Cheatsheet的一些方法來消毒數據,但我認爲沒有什麼是PHP的具體。

+0

好的。謝謝你的幫助。上述代碼僅用於解釋我的問題。我很確定我有實際的代碼已經過消毒和安全。 – 2012-03-08 22:54:58

+0

爲了安全起見,我添加了一個OWASP的SQL注入預防備忘單的鏈接,我確信它會幫助某個人... – JKirchartz 2012-03-09 15:25:04