2009-10-11 101 views

回答

2

你可以嘗試添加一些魔術價值,你的get/post或cookie。然後在頁面開始處檢查該值,並在缺失頁面時返回一些錯誤頁面。

但是,這不會阻止某些用戶做到這一點。如果他們調試您的請求,例如使用Firebug,那麼他們可以使用該幻數來複制請求。

0

你不能阻止它100% - 來自jQuery的請求是正常的瀏覽器請求,所以你可以做的最多的事情是阻止外部鏈接和偶然訪問(有人誰去麻煩完全複製HTTP請求仍然會能夠打開頁面;這是沒有辦法的)。

您可以通過檢查HTTP「referer」標頭並確保引用頁面是您的來停止外部鏈接。

您還可以通過檢查標頭「X-Requested-With」來檢查特定請求是否來自jQuery與瀏覽器 - jQuery添加此標頭並使用值「XMLHttpRequest」填充該標頭;一個普通的瀏覽器請求不會有這個頭。

你也可以使用cookies建立一個驗證系統,過期的令牌必須是請求的一部分,等等。但是這是更多的工作和(我認爲)矯枉過正 - 如果有人決定直接訪問頁面並可以繞過HTTP頭過濾,他們也可以找出你的令牌。

0

從類似discussion

報價Eran Galperin正如其他人所說,Ajax請求可以被 要創建適當的 頭效仿。如果你想有一個基本的 檢查,以查看該請求是否是一個Ajax請求 你可以使用:

if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') { 
//Request identified as ajax request 
} 

但是你永遠不應該在這個基礎檢查您的 安全。如果您需要, 將消除直接訪問頁面 。

請把此答案由Jeremy Ruten也考慮到:

沒有低保 他們訪問它通過AJAX的方式。 直接訪問和AJAX訪問 都來自客戶端,因此它很容易被僞造成 。

爲什麼你要這樣做呢?

如果這是因爲PHP代碼不是 非常安全,那麼使PHP代碼更安全可靠 。 (例如,如果您的AJAX 將用戶標識傳遞給PHP文件,則 會在PHP文件中編寫代碼以確定 確定這是正確的用戶標識。)

上面鏈接的討論中更聰明的想法。