編碼的請求
您可以使請求的詳細信息有效無形的休閒惡棍通過編碼幾乎所有的URL,然後請求細節服務器端進行解碼。
請求詳細信息將包括您希望執行的操作以及與該操作相關的參數。
所有的請求都會被髮送到一個URL,服務器端進程會根據需要對請求細節進行解碼並執行相關操作。
例
原始地址:
/ajax/delete.php?parameter1=foo &參數2 =棒
請求詳細信息:
行動=刪除&參數1 = FOO &參數2 = BAR
編碼請求詳情(使用base64編碼):
YWN0aW9uPWRlbGV0ZSZwYXJhbWV0ZXIxPWZvbyZwYXJhbWV0ZXIyPWJhcg ==
編碼的URL:
/AJAX /請求= YWN0aW9uPWRlbGV0ZSZwYXJhbWV0ZXIxPWZvbyZwYXJhbWV0ZXIyPWJhcg ==
我不相信這是本機功能編碼在JavaScript中的base64,但它遠遠不可能找到一個合適的方法?或者寫你自己的。
對於混淆/縮小的客戶端JavaScript來說,確定如何「手動」請求是非常棘手的。
隱藏實現細節
有很多,你可以遵循,使您的應用程序通過URL濫用攻擊不易做法。
讓我們從一個URL開始:ajax/fetchDepartment.php?秒=部門& COMPANY_ID = 99
有沒有需要什麼樣的服務器端技術,您正在使用(PHP)也通過查詢字符串(秒,COMPANY_ID),什麼查詢字符串值實際上意味着透露。
掩蔽服務器端技術
假設你已定義爲默認index.php
,以下網址是等同的:
ajax/fetchDepartment.php?sec=departments&company_id=99
ajax/fetchDepartment/index.php?sec=departments&company_id=99
ajax/fetchDepartment/?sec=departments&company_id=99
第三個URL不會顯示您正在使用的服務器端技術。這限制了可能的攻擊範圍。它還使您可以更輕鬆地切換到不同的服務器端技術,而無需更改網址。
隱藏的請求參數含義
ajax/fetchDepartment/?sec=departments&company_id=99
ajax/99/departments/
後者URL仍然傳達足夠的信息,沒有透露什麼信息是指執行請求。
雖然有人仍然可以改變這些值,但他們不知道他們在改變什麼。這將使攻擊者更難評估和理解他們所做的任何URL更改的結果。
非常好的答案,謝謝。 – 2009-02-13 21:55:27