我們的安全性做法

最後更新日期:2026 年 11 月 1 日

GeckoFlag 是在您自己伺服器上執行的軟體。為了讓您能安心託付專案資訊,開發者會在每次發行時親自進行安全性檢測,並在此頁面公開其內容與結果。

本頁面為開發者自我檢測的紀錄並非由第三方機構進行的認證或稽核。我們也一併公開檢測了哪些項目,供您作為評估導入的參考。

設計上的安全性防護措施

GeckoFlag 預設內建下列防護措施,全部無需設定即可生效。

密碼保護

密碼不會以明文儲存,而是以 bcrypt 雜湊後儲存。密碼重設權杖同樣經雜湊後儲存,並限制重設申請的次數。

登入嘗試限制

同時以帳號及連線來源 IP 位址為單位計算登入失敗次數,超過一定次數後會暫時限制登入。藉此抑制暴力破解攻擊,以及鎖定大量帳號的攻擊。

CSRF 防護

所有表單送出時都會驗證權杖,防止來自外部網站的偽造操作。

XSS 防護

議題、留言、Wiki、筆記等的格式化文字,會以 HTML Purifier 僅保留允許的標籤後再儲存與顯示。連結僅允許 http 與 https。AI 產生的文字也一律經過相同處理後才儲存。

SQL 隱碼攻擊防護

資料庫操作使用 CakePHP 5 的 ORM 與預備陳述式(prepared statement)。

Host 標頭驗證

密碼重設、邀請與通知電子郵件中的連結,是根據已登錄的網域產生,而非請求的 Host 標頭。無法藉由不正當的 Host 標頭,將郵件中的連結替換為外部位址。

檔案保管

議題的圖片與專案的檔案保管於公開資料夾之外,並在確認檢視者是否為該專案的成員後才提供。不接受 PHP 等可執行副檔名的檔案。

API 金鑰加密

AI 功能所使用的 Claude API 金鑰會加密後儲存於資料庫。

Claude 整合的 API 權杖

Claude 整合預設為停用,只有在管理員啟用此功能並為每位使用者授權後才能使用。API 權杖僅儲存雜湊值,並可設定有效期限。變更密碼後權杖即失效。API 同樣執行與畫面相同的權限確認,唯讀權杖無法進行任何變更。

IP 位址限制

管理員可限定允許存取的 IP 位址。

關閉安裝程式

完成設定後,即無法再存取安裝程式畫面。

非公開資料夾保護

在 Apache 上,預設會拒絕對設定、記錄檔、原始碼等資料夾的直接存取(使用 Nginx 時請參閱建議設定)。

更新前自動備份

軟體更新前會自動建立備份。

更新檔案簽章驗證

官方更新檔案附有開發者的數位簽章(Ed25519)。更新前會核對簽章與所有檔案的內容,遭竄改的檔案或非官方的更新檔案將不會套用。

圖片上傳驗證

頭像、縮圖、標誌等圖片會依檔案內容判定格式,並以隨機檔名儲存。圖片的儲存資料夾不會提供圖片以外的檔案(使用 Apache 時)。不接受 SVG。

安全性標頭

傳送 Content-Security-Policy、X-Frame-Options、X-Content-Type-Options、Referrer-Policy、Permissions-Policy,防止點擊劫持及資訊外洩至外部網站。以 HTTPS 運作時也會傳送 Strict-Transport-Security,讓瀏覽器一律以 HTTPS 連線。

工作階段管理

每次登入時都會重新建立工作階段。權限變更、帳號刪除與密碼變更會立即反映到登入中的畫面。變更電子郵件地址與密碼時,必須輸入目前的密碼。

每次發行的安全性檢測

發布新版本前,我們會進行下列檢測。檢測在與正式環境架構相同的測試環境中進行,不會對運作中的服務或客戶的伺服器實施。最新版本進行的項目記載於「最新版本的檢測結果」。

類別檢測內容使用工具與基準頻率
相依套件確認所使用的套件是否有已知漏洞,並建立使用套件清單(SBOM)composer audit、OSV-Scanner、CycloneDX每次發行
靜態分析從原始碼中偵測輸入值抵達危險處理的路徑(XSS、SQL 隱碼攻擊等)Psalm(taint 分析)、PHPStan(等級 5)、Semgrep每次發行
機密資訊混入原始碼或發行檔案中是否含有密碼或 API 金鑰gitleaks每次發行
動態掃描在以管理員與一般使用者登入的狀態下,實際送出攻擊請求並確認回應Nuclei每次發行
權限檢測是否能藉由改寫網址中的 ID,檢視或操作未參與專案的議題、檔案、筆記自動測試(PHPUnit)、手動確認每次發行
檔案上傳可執行檔、偽裝成圖片的檔案、操控路徑的 ZIP 等是否會被拒絕程式碼審查、手動確認每次發行
XSS在議題內文、留言、Wiki、AI 產生的文字中輸入攻擊用字串,確認指令碼是否不會被執行程式碼審查、手動確認每次發行
依伺服器架構確認針對 Apache、Nginx 以及各種公開資料夾的配置方式,確認是否能直接存取設定檔或記錄檔手動確認每次發行
Claude 整合擴充功能擴充功能所用套件的已知漏洞、API 權杖的處理方式、通訊對象的限制npm audit、gitleaks、程式碼審查每次發布擴充功能
以檢查清單自我檢查逐項確認身分驗證、工作階段、輸入驗證、錯誤處理等參考 OWASP ASVS 5.0 等級 1、IPA(日本)「如何確保網站安全」每個主要版本
官方網站geckoflag.com 的 HTTPS 設定與安全性標頭SSL Labs、Mozilla Observatory每月 1 次

若發現嚴重程度為「高」或「中」的問題,在修正並重新檢測之前不會發行。「低」的問題會確認其內容,並予以修正或記錄不受影響的理由。

相依套件的更新方針

GeckoFlag 所使用套件(如 CakePHP)的已知漏洞,會在每次發行時進行確認。若發現會影響 GeckoFlag 的漏洞,將以下列期限為目標發布修正版。

  • 嚴重程度「緊急」「高」:公開後 14 天內
  • 嚴重程度「中」:公開後 30 天內
  • 嚴重程度「低」:下一次發行(最遲 90 天內)

即使是在 GeckoFlag 的使用方式下不受影響的漏洞,也會在下一次發行時更新至已修正的版本。開發用套件不包含在發行檔案中。

最新版本的檢測結果:v1.11.0

v1.11.0 沒有嚴重程度「高」或「中」的未修正問題(檢測日期:2026-10-28)。

本次以 v1.10.0 以來的變更(Claude 整合,以及 RTF 文字的文字顏色、背景色與分隔線等)為對象進行檢測,並一併修正了先前版本中已存在的問題。若您正在使用 v1.10.0 或更早的版本,建議更新至 v1.11.0。

PHP / 資料庫PHP 8.3、MariaDB 10.11
網頁伺服器Apache 2.4、Nginx 1.24(PHP-FPM 8.3)、PHP 內建伺服器
實施地點開發者的測試環境
檢測使用工具(版本)偵測數(高 / 中 / 低)處理
相依套件GitHub Advisory Database、FriendsOfPHP security-advisories(2026-10-28 時的資料,89 個套件)0 / 0 / 0發布檔案所含的套件中沒有已知漏洞。開發用套件的已知漏洞已在 v1.11.0 中更新解決(開發用套件不包含在發布檔案中)
靜態分析與程式碼審查Psalm 5.26.1(taint 分析)、PHPStan 2.1.17(等級 5)、Semgrep 1.182.1、人工程式碼審查(v1.10.0 以來的變更部分:Claude 整合的 API 與權杖、RTF 文字、保持登入、軟體更新;並包括所有畫面的連結輸出)1 / 1 / 3「高」「中」及 2 件「低」已在 v1.11.0 中修正。剩餘 1 件「低」僅會因使用者本人的操作而發生,已確認影響有限。「高」1 件是先前版本中已存在的問題
機密資訊混入gitleaks 8.24.20 / 0 / 0同時檢查了原始碼與發布檔案。偵測到的 2 件皆為誤判(外部套件內的範例字串等)
修正確認在測試環境(PHP 8.3、MariaDB 10.11、Apache 2.4、Nginx 1.24、Chromium)中進行運作確認—針對每項指出的問題,確認修正前的問題已不再重現
動態掃描Nuclei v3.11.1(範本 v10.5.1)。分別以未登入、管理員、成員狀態實施0 / 0 / 0沒有問題
權限檢測PHPUnit 12.5(自動測試 454 件。除先前內容外,確認 Claude 整合的 API 會拒絕無權杖、唯讀權杖、未獲允許的使用者及功能停用時的要求,且不會存取到使用者未參與的專案)0 / 0 / 0沒有問題
依伺服器架構確認手動(Apache 2.4、Nginx 1.24 的 2 種公開資料夾配置方式。設定檔、記錄檔、工作階段、儲存的檔案等 39 個網址)0 / 0 / 1已在 v1.11.0 中修正:在 Apache 上也完全拒絕對舊版本檔案儲存資料夾(files)的直接存取。其他沒有問題
檢查清單OWASP ASVS 5.0 等級 1(70 個項目)適用的 56 個項目中符合 50 個本次未重新檢視(沿用先前 v1.10.0 的結果)
Claude 整合擴充功能npm audit、gitleaks 8.24.2、mcpb validate、人工程式碼審查(geckoflag-1.0.0.mcpb)0 / 0 / 0發布檔案所含的套件中沒有會造成影響的已知漏洞。已確認 API 權杖的處理方式與通訊對象的限制(僅限 HTTPS、不跟隨重新導向)

包含過去版本在內的所有版本檢測結果,彙整於「過去的檢測結果」。

未檢測的範圍

上述檢測有下列限制。評估導入時,也請一併確認這些事項。

  • 未接受第三方檢測。目前尚未進行由外部專家執行的原始碼審查或滲透測試。
  • 客戶的伺服器環境不在檢測範圍內。安全性會因作業系統、網頁伺服器、PHP、資料庫的設定與更新狀況而有很大差異。
  • 並未在所有主機環境中確認。已檢測的架構僅限於「最新版本的檢測結果」中所記載者。
  • 外部服務不在範圍內。AI 功能所使用的 Anthropic 公司 API、Claude 整合所使用的 Claude 桌面應用程式、郵件傳送伺服器等的安全性,取決於各提供者。
  • 關於自動化工具未偵測到的問題。工具無法偵測的問題類型(如業務邏輯缺陷)以手動檢測補足,但無法涵蓋所有情況。

發現漏洞時的回報方式

若您發現疑似 GeckoFlag 漏洞的問題,請勿在公開場合發布,而是直接聯絡下列窗口。所有回報都會由開發者親自閱讀。

回報窗口:請透過聯絡表單,將諮詢類型選為「漏洞回報」後與我們聯絡

希望您提供的內容

  • 對象版本,以及有問題的畫面或功能
  • 重現步驟(在可能的範圍內)
  • 預期的影響
  • 您所使用的伺服器環境(PHP、網頁伺服器等)

請求事項

  • 請在您自己管理的環境中進行驗證,切勿對他人營運的 GeckoFlag 或 geckoflag.com 進行攻擊性操作。

若您希望,我們會在修正版的安全性資訊中刊登回報者的姓名以表謝意。

發行檔案的 SHA-256

您可以核對下列值,確認下載的檔案是否與官方檔案相同。

檔案SHA-256
GeckoFlag - 1.11.0.zip33354ac588c4cb4de2953c3c26a484953c2bb886f38196ba4bcf4fe629648399
geckoflag-1.0.0.mcpb44f2c6dfc9f437856d0680920a327820d757a14116064faa6e46ad8a961d0747

確認方式:Windows 請在 PowerShell 中執行 Get-FileHash 檔案名稱 -Algorithm SHA256,macOS 與 Linux 請執行 shasum -a 256 檔案名稱。

安全使用的建議設定

GeckoFlag 的安全性也取決於安裝所在伺服器的設定。建議進行下列設定。

  1. 上傳後立即完成安裝:在安裝完成之前,任何知道網址的人都能開啟設定畫面。放置檔案後,請立即完成安裝。
  2. 以 HTTPS 運作:登入資訊與專案內容會以加密方式傳輸。許多共享主機都提供免費的 SSL 憑證。此外,一旦以 HTTPS 開啟,瀏覽器在之後 1 年內都會以 HTTPS 連線至該網址(v1.10.0 起)。若您打算停止使用 HTTPS,請特別注意。
  3. 將公開資料夾(文件根目錄)設為 webroot:設定檔與記錄檔將位於無法從網路上看到的位置。
  4. 使用 Nginx 時,請加入設定:Nginx 不支援 .htaccess。請另外設定拒絕存取非公開資料夾,並讓圖片的上傳目的地(webroot/img)不執行 PHP。設定範例請參閱手冊(安裝)。
  5. 更新至最新版本:安全性修正會包含在最新版本中提供。請從官方網站取得更新檔案,並確認 SHA-256。自 v1.10.0 起,更新前也會自動驗證簽章。
  6. 將 PHP 與資料庫維持在仍受支援的版本:已終止支援的 PHP 不會再提供修正。
  7. 保護管理員帳號:請使用長且難以猜測的密碼,並僅將管理員權限授予需要的人。
  8. 公司內部使用時請啟用 IP 限制:可從「設定」限定可存取的 IP 位址。
  9. 定期備份:請將資料庫與上傳的檔案保存在伺服器以外的地方。

安全性相關諮詢