什麼是動態網頁 dynamic pages ?
大多數現代 Web 應用程式都是靜態和動態網頁的集合。靜態網站包含託管在 Web 伺服器上的簡單 HTML 頁面和支持文件(例如,級聯樣式表 (CSS)、JavaScript (JS))。當網站訪問者請求靜態頁面時,例如,通過點擊連結、選擇瀏覽器書籤或輸入 URL;Web 伺服器直接將頁面發送到 Web 瀏覽器,而不修改頁面的最終內容。
什麼是動態網頁?
這個簡短的文章將回答這個問題。它還將解釋為什麼動態頁面需要深入的模糊測試和手動測試來保護它們免受威脅行為者的侵害。
什麼是動態網頁?
動態頁面為不同的用戶顯示不同的內容,同時保留相同的佈局和設計。此類頁面通常以 CGI、AJAX、ASP 或 ASP.NET 編寫,與簡單的靜態頁面相比,加載時間更長。它們經常用於顯示頻繁變化的資訊,例如天氣更新或股票價格。
動態頁面通常包含用於不同服務的應用程式,並且需要資料庫等伺服器端資源。資料庫允許頁面創建者將網站的設計與要顯示給用戶的內容分開。一旦他們將SEO內容上傳到資料庫中,網站就會根據用戶請求對其進行檢索。
兩種類型的動態網頁
- 客戶端腳本:響應其中的操作(“客戶端事件”)而更改的網頁使用客戶端腳本。這些腳本在用戶的計算機上生成“客戶端內容”,而不是在網絡伺服器上。
- 伺服器端腳本:在加載或訪問時更改的網頁,或基於提交給它的內容,使用伺服器端腳本。加載頁面時,會生成伺服器端內容。示例包括登錄頁面、購物車和提交表單。
如何處理動態網頁?
當網絡伺服器收到用戶對動態頁面的請求時,它不會像處理靜態頁面那樣將頁面直接發送到請求瀏覽器。相反,它將頁面傳遞給應用程式伺服器,然後完成三個活動:
- 閱讀頁面上的程式碼
- 根據程式碼說明完成頁面
- 從頁面中刪除程式碼
這會產生一個靜態頁面,該頁面由應用程式伺服器傳回 Web 伺服器,然後傳遞給請求瀏覽器進行顯示。
應用程式伺服器不能直接與資料庫通信,因此它需要一個資料庫驅動程式,該驅動程式起解釋器的作用,並讓應用程式讀取和操作原本無法破譯的數據。
動態網頁和深度模糊測試和手動測試的需求
儘管動態網頁對許多類型的網站都很有用,但它們可能會給應用程式安全測試團隊帶來困難。
一方面,開發人員很難找到與不同系統組件的一致通信形式,這使得進行自動化測試變得困難。這會導致額外的人工工作和測試人員資源的額外成本。
其次,由於客戶端和伺服器緊密耦合,很難獨立開發、測試和部署它們。這也帶來了另一個問題:一個地方有更多的程式碼,這意味著更多的混亂,以及更高的“意大利麵條程式碼”風險,即非結構化、複雜且難以維護的程式碼。此外,由於伺服器編程和客戶端編程需要不同的方法,因此幾個開發人員最終在一個程式碼庫上工作,這不僅在開發期間而且在測試期間都會導致混亂。
最後,動態網頁需要更深入的模糊測試和手動測試,以了解不受信任的用戶輸入如何導致未經授權的訪問,並影響後端操作。例如,不良行為者可能會執行命令注入攻擊,以通過易受攻擊的 Web 應用程式在主機操作系統上執行任意命令。當應用程式傳遞不安全的用戶提供的數據時,這種攻擊是可能的,比如通過表單,這在動態網頁中很常見。同樣,威脅參與者可能會執行SQL 注入通過從客戶端到應用程式的輸入數據插入 SQL 查詢來進行攻擊。此類漏洞可以讀取或修改動態站點的資料庫,對其執行管理操作,並在某些情況下向操作系統發出命令。所有這些都是動態網頁的真正安全挑戰,無法通過自動化測試或漏洞掃描充分識別或解決。
結論
我們希望我們已經充分回答了您的問題:什麼是動態網頁?儘管有用,但動態頁面並非沒有問題,尤其是在測試方面。我們在本文中強調了其中的一些挑戰。