在我的CMS中,我有一個使用AJAX將大量迷你接口加載到面板的頁面。這些接口來自/ajax
目錄中的各種PHP文件。PHP - 只允許通過AJAX訪問
是否有可能以某種方式允許使用ajax訪問這些文件,而不僅僅是瀏覽它們?
當然,我擔心有人會發現/ajax
目錄,並且無需登錄即可訪問CMS的核心功能。當然,我可以導入我的用戶類並單獨驗證每個AJAX文件,但是隻能通過AJAX訪問嗎?
在我的CMS中,我有一個使用AJAX將大量迷你接口加載到面板的頁面。這些接口來自/ajax
目錄中的各種PHP文件。PHP - 只允許通過AJAX訪問
是否有可能以某種方式允許使用ajax訪問這些文件,而不僅僅是瀏覽它們?
當然,我擔心有人會發現/ajax
目錄,並且無需登錄即可訪問CMS的核心功能。當然,我可以導入我的用戶類並單獨驗證每個AJAX文件,但是隻能通過AJAX訪問嗎?
是否有可能以某種方式允許使用ajax訪問這些文件,而不僅僅是瀏覽它們?
號
你可以添加額外的HTTP標頭,或者修改現有的(如Accept
)當你從JavaScript的請求......但既然你想出於安全原因,做到這一點,那將不足。
當然,我可以導入我的用戶類,並驗證每一個AJAX的單獨文件
做到這一點。 Ajax請求並不特殊。它們只是HTTP請求。針對Ajax創建的終點應像其他任何HTTP請求終點一樣,通過身份驗證/授權進行保護。
不,不管怎樣,黑客都可以僞造Ajax請求。你需要在任何地方進行身份驗證,否則你會被搞砸。
從瀏覽器外部,任何人都可以向您網站上的任何公開網址發起HTTP請求。除了標題之外,沒有什麼特別的AJAX請求,而且這些請求很容易被欺騙。
現在什麼不能很容易被欺騙是一個安全的會話機制。如果您要求人們登錄,那麼無論如何您都應該這樣做。
簡單的答案,「不」。
您的ajax文件還應該驗證用戶是否以系統前端相同的方式登錄。
AJAX與Standart請求幾乎相同,您可以檢查標題,但這不是安全的方式。如此之短,你不能這樣做。在服務器端對你提出的建議進行認證。
驗證您的AJAX文件。如果它們有很多,請創建一個類並將其擴展到每個單獨的AJAX文件中。
/ajax/abstract.php
:
<?php
abstract class AjaxHandler {
public function __construct() {
// import authentication handler
if ($authenticated) {
$this->display();
}
else {
header('HTTP/1.1 401 Unauthorized');
exit;
}
}
}
然後在每個文件中,即/ajax/get_user_profile.php
:
<?php
class GetUserProfile extends AjaxHandler {
public function display() {
// do your routine
}
}
好了,你可以有另一種選擇是使用post
方法來獲得從PHP的內容,並在你的PHP你應該設置爲post
方法的關鍵。然後系統刪除跨源訪問。 :)
不,您**必須**將您的驗證碼放入處理服務器端代碼的每個請求中。 – Flukey
這是一個糟糕的安全模型。 – NullUserException
@NullUserException我沒有說這是我的任何生產代碼中的安全模型 - 我只是好奇... –