本篇文章更新時間:2021/09/03
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣新台幣 贊助支持。


最近有一個網站要上線,上線前需要通過「無障礙設計」與「OWASP Top 10」的資安風險檢測。

無障礙設計交給前端同事對照 NCC 檢測工具 Freego 離線測試,顯示有問題的部分就修正與重新檢測,直到都通過給出報告。

通常會掃到一堆問題,但因為頁面很多重複性區塊,所以不用覺得灰心,逐一修正,問題就會消失很快。很多時候關鍵是在使用者上架內容沒有遵守這標準導致!同事大概只花半小時就處理完了... 也是第一次掃描。

而資安檢測部分,OWASP Top10(Open Web Application Security Project)開放網路軟體安全計畫十大弱點的部分就是直接用 OWASP ZAP (寫文當前版本: 2.10.0)這套黑箱掃描工具進行,標準是「沒有中、高以上的資安風險」

檢測結果報告如圖:

OWASP ZAP report

軟體畫面:

OWASP ZAP

Low 等級問題 2,Information 提示 2。這樣就滿足條件過關拉!

一開始也是無腦給他去掃描,看到問題才逐一修正,下方筆記放置於 functions.php 裡的方法:

// 預設關閉 XML_RPC
add_filter('xmlrpc_enabled', '__return_false');
// 輸出 X-Frame-Options HTTP Header
add_action('send_headers', 'send_frame_options_header', 10, 0 );
// 關閉 HTTP Header 中出現的 Links
add_filter('oembed_discovery_links', '__return_null' );
remove_action('wp_head', 'rest_output_link_wp_head', 10);
remove_action('template_redirect', 'rest_output_link_header', 11);
remove_action('wp_head', 'wp_shortlink_wp_head', 10);
remove_action('template_redirect', 'wp_shortlink_header', 11);
// 關閉 wp-json 首頁顯示的 API 清單
add_filter('rest_index', '__return_empty_array');
// 針對請求路徑中帶有 script 關鍵字的阻擋
add_action('template_redirect', function(){
        global $wp;
        $url = add_query_arg($_SERVER['QUERY_STRING'], '', $wp->request);
        if (strpos($url,'script')!==false){
                wp_redirect(home_url('/'));
                exit;
        }
},-1);

另外關於 WordPress REST API 的 Endpoints 終端點開放與否再套用這款外掛 Disable REST API 來勾選,只留下真有用到的,並關閉 wp-json 首頁的列表,不開放對外觀察。

上面方法裡,最後一個比較暴力,由於知道 OWASP ZAP 會去使用 XSS 方式帶參數攻擊網站,所以針對請求路徑中,包含「script」的都攔截,轉請求回首頁。這個操作要看網站是否真的有用到這樣的路徑,有的話要想辦法去另外解或是避開。

再來是開發網站的時候如果在 WordPress Loop 裡要取得文章永久連結,不建議用 get_post_permalink 這方法,建議使用 get_permalink 這個,原因是前者會輸出帶有 p & post_type 參數的路徑,這對 OWASP ZAP 來說有外露參數就有 XSS 風險,修正輸出成 Post Name (Slug) 形式就可以避開。

到這邊就大致上沒問題了,好像才掃描兩回合吧(看網站大小,這每一回合時間都不短),逐一解開列出的問題,過程中也不需要特別安裝什麼資安外掛,可能正式上線後再來考慮裝上 WAF ,把這類型掃描網站的操作封鎖掉,不能掃描或是掃描不完整,也是一種阻止漏洞被發現的操作。

最後再補充一點是頁面上有任何表單操作,這款掃描工具都會順藤摸瓜,所以如果沒用一點小技巧來阻止被爬到資料,也會視為有風險問題,舉例先前筆記過的 [WordPress] Contact Form 7 表單防止機器人發送垃圾郵件的技巧 也有在此網站上套用。


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[///////////____36%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon