在探討網頁應用程式資訊安全的常見問題前,我們首先要先了解什麼是網域、網站主機、網頁應用程式,他們分別扮演著什麼樣的角色,接下來我們再進一步探討它們可能個別會面臨到什麼樣的資訊安全的挑戰。
對於網域管理人員來說,常見的攻擊有網域綁架 (Domain Hijacking)、域名解析攻擊 (DNS Spoofing)
域名綁架(Domain Hijacking)是指不合法地控制或轉移他人的域名所有權的行為。這種情況通常發生在域名的註冊人或管理者帳戶被未經授權的人或組織入侵或盗取的情況下。這些入侵者可能使用各種技術手段,如社交工程、惡意軟體攻擊或駭客攻擊,來取得對域名註冊商或註冊人帳戶的控制權。
為了防止域名綁架,建議域名持有人採取以下安全措施:
DNS Spoofing是指攻擊者修改域名解析(DNS)的過程,使得當用戶試圖訪問特定網站時,他們被導向到攻擊者控制的惡意網站。這種攻擊的目的是欺騙用戶,使其相信他們正在與正確的網站進行通信,從而進行釣魚、盜取敏感資訊或進行其他惡意活動。
在正常情況下,當用戶輸入網站的域名或網址時,瀏覽器會向域名解析器(DNS Resolver)發送請求,以獲取相應網站的IP地址。域名解析器會查找域名對應的IP地址,然後將該地址返回給瀏覽器,以便建立與網站的連接。
DNS Spoofing攻擊通常涉及攻擊者干擾這個域名解析過程。攻擊者可以使用各種技術手段,如DNS快取中毒、中間人攻擊或DNS服務器劫持,來篡改或替換正確的IP地址。當用戶輸入被篡改的域名時,他們的瀏覽器會收到惡意的IP地址,導致他們被重定向到攻擊者控制的網站。
為了防止DNS Spoofing攻擊,可以考慮以下安全措施:
使用可靠的DNS解析服務器:選擇由可信的提供商提供的DNS解析服務器。這些服務提供商通常實施嚴格的安全措施,以保護其服務免受攻擊。
DNSSEC(DNS安全擴展):DNSSEC是一個安全擴展協議,可提供數字簽名和驗證DNS數據的機制。通過使用DNSSEC,可以防止DNS數據的篡改和DNS綁架攻擊。
定期檢查DNS設定:定期檢查域名註冊商和DNS解析器的設定,確保註冊資訊和DNS解析配置是正確的且沒有被更改。
監控DNS流量:實施DNS流量監控機制,以檢測異常的DNS查詢和回應,例如大量的重複查詢、非常規的IP地址回應等。
防火牆和入侵檢測系統:使用防火牆和入侵檢測系統,以檢測和阻止可能的DNS Spoofing攻擊。這些系統可以監視和分析DNS流量,並根據事先定義的規則或模式進行檢測。
對於網站主機管理人員來說,常見的攻擊有拒絕服務攻擊(DDoS)、Web Server 漏洞攻擊,以及需隨時確保主機存取權限的控管是在可控範圍內。
DDoS(Distributed Denial of Service)攻擊是一種針對網站、網路服務或網路基礎設施的攻擊形式。在DDoS攻擊中,攻擊者通過同時向目標系統發送大量請求或流量,超過其處理能力的極限,從而使其無法正常運作或無法提供服務,導致服務中斷或降級。
DDoS攻擊的目的是使目標網站或服務無法對合法用戶提供服務,削弱其可用性。攻擊者通常通過操縱大量被感染的計算機或裝置(稱為"殭屍網路"或"僵屍網路")組成的"機器人網路"(botnet)來發起攻擊。這些殭屍計算機通常是感染了惡意軟體,攻擊者可以通過遠程控制將它們集結在一起,同時對目標進行攻擊。
為了防止 DDoS 攻擊,最常見的作法之一是在主機使用 IP 黑名單將攻擊 IP 阻擋在外,但即使如此 Web Server 仍然需要做 IP 的判斷,面臨到大量攻擊時可能仍然無法承受。因此你可以考慮向資安公司購買流量清洗服務才能有效遏止攻擊。
要注意的是,你會需要將網域同時託管給資安廠商後才能使用相關的流量清洗服務,因此 DDoS 攻擊雖然是主機需要在意的,但如果沒有網域層級人員的配合,很有可能無法完全防禦攻擊。
市面上存在著許多的 Web Server 軟體,許多駭客每日都在研究如何找到這些 Web Server 軟體的漏洞來進行攻擊,因此固定的追蹤使用的 Web Server 軟體漏洞更新是必要的,除此之外可能由於不當的 Web Server 防火牆 (WAF) 設定,導致潛在的風險。
常見的 Web Server 有 Apache, Nginx...等,建議向服務廠商確認所使用的 Web Server 為何,並確認設定是否正確、是否有固定更新軟體。
對於主機存取的控管是廠商服務的基本功,需確保主機被放置於安全的地方,並且所有連線存取都是有相關的稽核紀錄,僅限制有權限的人和特定地方的人才能遠端存取主機。常見的方式是可以透過 IP 白名單來管理存取。
對於網頁應用程式面來說,常見的攻擊有 SQL Injection (Structured Query Language Injection)、XSS (Cross-Site Scripting)、Session Hijacking、Code Injection
SQL Injection(Structured Query Language Injection)是一種常見的網站應用程式安全漏洞和攻擊技術。當網站的應用程式在處理用戶輸入時未正確驗證或過濾數據,攻擊者可以利用這個漏洞將惡意的SQL代碼插入到應用程式的SQL查詢中。
SQL Injection 攻擊的目的是利用對應用程式的不當SQL查詢,以獲取未授權的數據,修改數據庫內容,甚至完全控制應用程式的後端數據庫。攻擊者可以通過注入的SQL代碼執行各種操作,如資料庫資料的洩露、刪除、修改、新增、權限提升等。
SQL Injection攻擊可以防止的措施包括:
XSS(Cross-Site Scripting)是一種網站應用程式的安全漏洞,攻擊者可以利用這個漏洞將惡意的腳本代碼注入到網站的網頁中,當其他用戶訪問這些受感染的網頁時,腳本代碼將在他們的瀏覽器中執行。
XSS攻擊的原理是,當網站的應用程式在輸出用戶提供的數據時,未對數據進行適當的驗證或過濾,導致用戶輸入的內容被認為是可信的網頁內容,並被直接插入到網頁中,而不是當作純文字處理。這樣,攻擊者可以通過插入惡意的HTML、JavaScript或其他網頁腳本代碼,來實現對用戶的攻擊。
對用戶輸入的數據進行嚴格的驗證和過濾,避免將任何不可信的內容直接插入到網頁中可以防止XSS攻擊。
Session Hijacking(會話劫持)是指攻擊者未經授權地盜取或利用受害者的會話憑證(session credentials)或會話標識(session identifier),以冒充受害者的身份進行攻擊。會話憑證或會話標識通常是用於驗證和識別用戶在網站上的連續請求的標誌。
會話劫持攻擊的原理是,攻擊者截取或竊取受害者的會話憑證或會話標識,通常是通過竊取受害者的Cookie或使用網路封包嗅探等技術來實現。一旦攻擊者獲取了有效的會話憑證或會話標識,他們可以在受害者不知情的情況下冒充受害者的身份進行操作,包括訪問受限制的資源、執行未經授權的操作、修改個人資訊等。
防止會話劫持攻擊的措施包括:
使用加密協議:通過使用加密的協議,如HTTPS,可以防止在網路上嗅探到會話憑證或會話標識。
定期重新驗證:在會話中定期重新驗證用戶的身份,並要求重新輸入密碼或其他驗證信息。
強化Cookie 安全性:使用安全的Cookie標誌(secure flag)和HttpOnly屬性,限制Cookie的訪問範圍,減少Cookie被竊取的風險。
延伸閱讀:SSL 憑證申請購買流程教學,憑證的費用跟等級該如何做評估?
Code Injection 程式碼注入的問題通常發生在可自由拓展外掛的 CMS 系統,例如 WordPress、Joomla、Drupal。問題可能發生於 CMS 系統的核心或是開發者在上面所安裝的外掛。因此建議要固定更新 CMS 核心版本以及避免使用來路不明的外掛,除此之外,外掛也需要定期更新至最新版本,以確保網站不會暴露在危險之中。
當然 Code Injection 不僅是 CMS 系統中會出現,也會出現在客製化開發的系統或是其他情況下,只要開發的程式或是主機有漏洞可以讓攻擊者任意修改程式,那麼就會產生相關的風險。因此應隨時掃描程式碼確認沒有包含惡意程式。
網站廠商的服務範圍相當廣泛,除了開發網頁應用程式以外,為了方便服務客戶,也會提供網域、主機的購買與管理服務,甚至是網站內容的維護與更新。
照常理來說網站廠商僅需負責的是「網頁應用程式」相關的資訊安全問題,但你可以先試著思考以下兩個問題:
如果廠商有協助你代為購買或是管理以上項目,那麼廠商就會需要負起相關的資訊安全責任,但如果假設網站廠商並沒有管理網域的責任,那麼就不該要求網站廠商協助進行防禦 DDoS 攻擊的流量清洗服務。
網站廠商並非資訊安全廠商,所謂術位有專攻,網站廠商雖然具備著豐富的網站相關知識,但資訊安全也是個不斷改變的知識領域,因此建議在資訊安全上應尋找第三方合法合規的資訊安全服務廠商做稽核。