安全性

本文件提供與 WhatsApp Business API 用戶端有關的密碼、驗證、SSL 配置、網絡隔離、加密通訊、HTTP 標題和網頁伺服器 TLS 通訊協定之資訊。

密碼及驗證

如欲了解更多有關驗證憑證密碼最佳操作實例的資訊,請參閱登入和驗證文件

SSL 配置

存取 WhatsApp Business API 用戶端時,您必須使用 HTTPS。

建立 WhatsApp Business API 用戶端時,系統會預設產生自行簽署憑證。您可能需要用於產生自行簽署憑證的認證機構 (CA) 憑證,以驗證 WhatsApp Business API 用戶端端點,並避開憑證信任警告。或者,您亦可上載 CA 憑證,而不是自行簽署憑證。詳情請參閱 CA 憑證文件

由於 Webhooks 亦需要使用 HTTPS 來執行回調,您可以使用自己的 CA 憑證,以免應用程式在嘗試 POST 至已配置 Webhooks 時遇到 SSL 錯誤。詳情請參閱 Webhooks CA 憑證文件

網絡隔離

我們建議您在不同的獨立隔離網絡中託管網頁版應用程式和核心應用程式節點,並只將它們提供給必需的服務。

網頁版應用程式節點只應向託管 WhatsApp Business API 用戶端和管理人員工作站的網絡提供 API 和網頁版管理端點。

核心應用程式節點只應向網頁版應用程式節點提供通訊服務,而且在多點連線設定中,此節點只應向其他核心應用程式節點提供控制服務。

加密通訊

網頁版應用程式與核心應用程式之間的通訊

建議您在核心應用程式和網頁版應用程式容器中均設定 WA_SECRET 環境變數,以確保兩者之間的通訊經加密處理。

備註:核心應用程式和網頁版應用程式主機的時間需要經過同步,以確保能夠順利加密通訊。如果時間有所偏移,重新執行保護功能(即設 10 秒寬限期的時戳檢查功能)可能會導致通訊失敗。

資料庫通訊

您可以配置用於加密資料庫連線的 SSL 參數,以保護傳輸中的資料。

之前,只有核心應用程式與資料庫之間的連線可經過 WA_DB_CONNECTION_OPTION 環境變數加密,因為以往一向只有核心應用程式可以存取資料庫。然而,由於網頁版應用程式現在也可以存取資料庫,所以您務必要加密網頁版應用程式與資料庫之間的連線。因此,我們已更改 SSL 配置,以便所有容器均可存取它。您可以使用以下環境變數來配置加密設定:

  • WA_DB_SSL_KEY
  • WA_DB_SSL_CERT
  • WA_DB_SSL_CA
  • WA_DB_SSL_VERIFY

您可以配置 WA_DB_SSL_VERIFY 來驗證伺服器身分。在部分內部開發設定中,此乃必要配置,因此我們強烈建議您不要停用驗證功能。如未設定此參數,則系統預設開啟驗證功能。若要停用驗證功能,請使用以下程式碼:

WA_DB_SSL_VERIFY=0

備註:WA_DB_SSL_VERIFY適用於網頁版應用程式。

為了確保舊版相容性,系統會在已停用模式中繼續支援 WA_DB_CONNECTION_OPTION,而且您可以將其用來加密核心應用程式與資料庫之間的連線。我們強烈建議您切換至上述新參數。

所有在 Key、Cert 和 CA 環境變數中配置的檔案都必須是可透過容器內部存取。為此,您可以在擁有適當權限的資料磁碟區下建立 certs 目錄。一般會以 /usr/local/waent/data 掛接資料磁碟區,之後便可透過容器內部的 /usr/local/waent/data/certs 存取憑證目錄。

網頁伺服器 (TLS)

TLS 通訊協定和密碼已按照 Mozilla 建議的配置完成配置。網頁版應用程式支援 3 種設定檔:MODERN(預設)、INTERMEDIATE 和 OLD。

我們建議您保留預設配置,以加強安全保障。不過,您可以選擇使用 WA_WEB_SECURITY_LEVEL 環境變數將設定檔降級。

HTTP 標題

以下 HTTP 標題適用於網頁管理頁面,但不適用於 API 端點,且受所用的瀏覽器限制。

名稱說明

X-Content-Security-policy

定義只允許來自相同網域之指令碼在網頁管理頁面運行的政策

X-Frame-Options

標題不允許任何網域將網頁管理頁面納入為 iframe

X-XSS

一款保護標題:當偵測到攻擊時,會安全清除輸入內容,從而保護網頁管理頁面免受跨網站指令碼攻擊

X-Content-Type-Options

確保伺服器收到的內容類型與其所要求的類型相同

Strict-Transport-Security

確保網頁管理頁面只能經由 HTTPS 存取