OWASP(Open Web Application Security Project)是一個致力於開發、採納以及維護一個安全軟體開發的最佳實踐、技術辭彙、實驗室、工具和技術諮詢的社區。
OWASP發布了許多指南,其中最為著名的就是OWASP Top 10,每次更新都會反應出最新的攻擊趨勢。由於Web安全風險不斷發展,因此OWASP Top 10也在不斷演變。本文將從多個方面對OWASP Top 10的演變過程做詳細的闡述。
一、Top 10的歷史演變
OWASP Top 10於2003年發布,旨在提供Web應用程序在常見漏洞方面的「十大」清單。自2003年以來,根據不斷變化的網路和攻擊環境,它已發生了多個版本的改變。
最初,OWASP Top 10被用作幫助企業和開發者了解Web安全,以及協助審計人員和安全測試人員進行Web安全測試的基礎知識。它包括最常見的十個安全漏洞以及如何檢測和修復它們。
隨著時間的推移,Web應用的技術和漏洞也在不斷演變。在OWASP Top 10 2004版本中,”unvalidated input”(未經驗證的輸入)成為了新增條目。在2007版本中,”Information leakage and improper error handling”(信息泄露和不當錯誤處理)也新增。在2010年改版後,”Insecure communications”(不安全的通信)和”Unvalidated Redirects and Forwards”(未經驗證的重定向和轉發)被增加。
隨著雲計算和移動應用程序日益普及,web服務安全漏洞也成了一個新的話題。在2013年改版後的Top 10中,”Insecure Cryptographic Storage”(不安全的密碼存儲)和”Missing Function Level Access Control”(缺失的功能級別訪問控制)被加入其中。在2017年最新版本中,”XML External Entities (XXE)”(XML外部實體)和”Insufficient Logging and Monitoring”(不足的日誌記錄和監控)被新增。
二、Top 10的漏洞類型
根據最新的OWASP Top 10 2017版本,Web應用程序的十大漏洞類型是:
- Injection(SQL、OS等注入)
- Broken Authentication and Session Management(損壞的身份驗證和會話管理)
- Cross-Site Scripting(跨站腳本攻擊)
- Broken Access Control(損壞的訪問控制)
- Sensitive Data Exposure(敏感數據泄露)
- Security Misconfiguration(安全配置錯誤)
- Insufficient Attack Protection(不足的攻擊防護)
- Unvalidated Redirects and Forwards(未經驗證的重定向和轉發)
- Insecure Cryptographic Storage(不安全的密碼存儲)
- Insufficient Logging and Monitoring(不足的日誌記錄和監控)
三、示例代碼
1、SQL注入漏洞
//不安全的代碼
$user_id = $_GET['id'];
$query = "SELECT * FROM users WHERE id = $user_id";
//安全的代碼
$user_id = (int)$_GET['id'];
$query = "SELECT * FROM users WHERE id = $user_id";
2、跨站腳本攻擊
//不安全的代碼
$name = $_POST['name'];
echo "Welcome " . $name . "!
";
//安全的代碼
$name = htmlentities($_POST['name'], ENT_QUOTES, 'UTF-8');
echo "Welcome " . $name . "!
";
3、未經驗證的重定向和轉發
//不安全的代碼
$redirect_url = $_GET['redirect'];
header("Location: " . $redirect_url);
//安全的代碼
$redirect_url = filter_var($_GET['redirect'], FILTER_SANITIZE_URL);
if (filter_var($redirect_url, FILTER_VALIDATE_URL)) {
header("Location: " . $redirect_url);
} else {
echo "Invalid redirect URL";
}
4、不足的日誌記錄和監控
//不安全的代碼
$login_username = $_POST['username'];
$login_password = $_POST['password'];
if ($login_username === "admin" && $login_password === "123456") {
// 登錄成功,但是沒有日誌記錄
echo "Welcome, admin!";
} else {
echo "Invalid username or password";
}
// 安全的代碼
$login_username = $_POST['username'];
$login_password = $_POST['password'];
if ($login_username === "admin" && $login_password === "123456") {
// 登錄成功,記錄成功登錄的信息
error_log("Admin login success: " . date('Y-m-d H:i:s'));
echo "Welcome, admin!";
} else {
// 記錄失敗的登錄嘗試
error_log("Failed login attempt: " . date('Y-m-d H:i:s'));
echo "Invalid username or password";
}
四、結論
OWASP Top 10的準則是開發人員、QA團隊、安全專業人員和各種合規性標準(如PCI-DSS、HIPAA、ISO / IEC27001等)的基礎。通過闡述OWASP Top 10的演變過程,我們可以看到Web應用程序安全漏洞正在不斷發展和複雜化。保持持續學習和增強測試工具,以了解各種新的和變化的漏洞類型,這是Web應用程序安全的不斷要求。安全開發是必須的,而不是作為一項可選工作。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/200206.html