我有一個ajax.php文件,我的所有ajax調用都指向一個額外的當前調用腳本需要執行的參數。我的問題是,我想限制某些腳本僅由特定頁面執行,例如sendComment.php
應該只能從www.mysite.com/user/{any user}
調用。執行之前的Ajax驗證頁面
我所做的是把這個代碼在每個腳本的頂部,我想限制:
if(strstr($_SERVER['HTTP_REFERRER'],'mysite.com/{page_allowed_to_exec_script}'){
Then do stuff here
}
但是我來有什麼要注意的是,並不是所有的瀏覽器都支持HTTP_REFERRER(我可能有拼寫錯誤,我正在通過記憶來寫這篇文章),而且也不是跨瀏覽器,它也是一個痛苦的屁股,不得不在所有文件中對這些東西進行硬編碼,並且當它變得更大時來改變的東西..我正在尋找一種方式,我可能會擁有所有能夠執行它們的頁面的數組中的所有腳本,並在開始時執行ajax.php文件中的檢查。
有沒有人有任何想法這可以實現?
一般來說,您不限制可以訪問服務器端資源的*頁*,限制可以訪問它的*用戶*。身份驗證cookie等事情仍然通過AJAX請求發送,因此您可以像限制任何其他頁面請求一樣限制用戶訪問。真的沒有理由限制請求來自哪個頁面。 – David
不,我限制頁面,而不是用戶。我剛剛舉了一個用戶頁面的例子。同樣的腳本'sendComment.php'不應該能夠從其他地方調用,比如說'www.mysite.com/home'例如 –
這就是我的觀點,你是在倒退。限制頁面不正確。特別是因爲在服務器上確實沒有可靠的方法來了解客戶端上當前的「頁面」,如果有的話。你的AJAX服務應該只是API調用,不需要關心他們被調用的方式或內容,除了任何必要的用戶認證和授權之外。 – David