安全防護

1. 概述

1.1 版本

FineBI伺服器版本功能變更
6.0-
6.0.7

新增 Referer 校驗功能

開啟後,將根據白名單內容實現訪客控制

6.0.11

開啟請求回應優化後,報錯提示內容變更

6.0.13新增 URL 配置項,用於設定是否允許在 URL 中使用分號

1.2 功能簡介

在現代企業中,資料和資訊安全已經成為至關重要的議題。

帆軟透過多種安全防護功能,幫助企業有效應對各種安全威脅。

本文對安全防護相關功能進行說明,使用者可根據需求開啟防護措施。

2. Cookie增強

功能簡介

Secure 屬性是 HTTP cookie 的特性,指示瀏覽器僅在 HTTPS 連結下傳送該 cookie。

標記為 Secure 的 cookie 不會在不安全的 HTTP 連結中傳送,進而保護其安全性,防止竊取或篡改。

使用前提

僅在帆軟應用伺服器協定為 HTTPS 時,方可啟動此功能。

若伺服器協定為 HTTP,嘗試開啟 Cookie 增強將失敗,並提示「檢查到當前伺服器協定為HTTP,未能成功啟動。請確認伺服器開啟HTTPS後重試」。

開啟影響

預設狀態:Cookie 增強預設關閉。

開啟後:針對 HTTPS 通訊,某些 cookie 會自動新增 Secure 屬性,確定僅透過安全的 HTTPS 連結傳輸,提高安全性,防止在不安全的 HTTP 連結上公佈。

3. HSTS設定

3.1 功能說明

功能簡介

HSTS(HTTP Strict Transport Security)是一種安全傳輸協定,旨在強制瀏覽器僅透過 HTTPS 存取網站,進而保證使用者始終存取到網站的加密連結,保護資料傳輸安全

使用前提

僅在帆軟應用伺服器協定為 HTTPS 時,方可啟動此功能。

若伺服器協定為 HTTP,嘗試開啟「HSTS設定」將失敗,並提示「檢查到當前伺服器協定為HTTP,未能成功啟動。請確認伺服器開啟HTTPS後重試」。

開啟影響

預設狀態:HSTS 設定預設關閉。

開啟後:當使用者存取 webroot/decision 目錄下的資源時,將禁止 HTTP 存取,強制使用 HTTPS 存取該路徑及其子域。

注意事項:

1)HSTS 設定僅適用於 https://domain/webroot/decision 路徑(即帆軟應用),不適用於整個 https://domain 域名下的所有請求。

2)對於 IE11 及以下版本瀏覽器,開啟 HSTS 設定後不生效。

3)對於使用自簽章證件的帆軟應用伺服器,開啟 HSTS 設定後不生效。

3.2 設定方法

HSTS 設定」按鈕開啟後增加一個「header」:Strict-Transport-Security:,預設值為max-age=31536000; includeSubdomains

超級管理者可透過「fine_conf_entity視覺化配置插件」修改「header」的值。

注:修改 FineDB 資料庫表欄位值的方法請參考 FineDB常用表欄位修改

配置項配置值配置範例含義
WebSecurityConfig.hstsHeader

max-age=<expire-time>

max-age=31536000

設定在瀏覽器收到這個請求後的31536000秒的時間內凡是存取這個域名下的請求都使用HTTPS請求

max-age=<expire-time>; includeSubDomainsmax-age=31536000; includeSubdomains

設定在瀏覽器收到這個請求後的31536000秒的時間內凡是存取這個域名下的請求都使用HTTPS請求

此規則也適用於該網站的所有子域名

max-age=<expire-time>; preloadmax-age=31536000; preload

設定在瀏覽器收到這個請求後的31536000秒的時間內凡是存取這個域名下的請求都使用HTTPS請求

預載入HSTS

4. 檔案上傳校驗

4.1 功能説明

功能簡介

檔案上傳漏洞是指攻擊者透過上傳可執行的腳本檔案,獲得執行伺服器端命令的能力。

例如:伺服器允許使用者上傳圖片或正文檔案,但攻擊者繞過上傳機制,上傳惡意程式碼以控制伺服器。

開啟影響

預設狀態:檔案上傳校驗設定預設開啟。

開啟後:

在使用者填報、平台外觀配置及本地上傳檔案時,系統會對檔案的後綴、大小和二進制頭進行校驗。

校驗透過則上傳成功,未透過則上傳失敗。


校驗內容具體設定
檔案的大小

1)「系統管理>外觀配置」中,禁止上傳超過 20M 的圖片

上傳超出限制大小的圖片,會彈出提示框:「為使顯示效果較佳,請選擇尺寸不小於 1024*768,大小不超過20M的圖片,支援 PNG、JPG 格式。」

2)FineReport範本中的檔案元件,製作時可自行設定檔案的大小限制,超過限制則無法上傳

上傳超出限制的檔案,會彈出提示框:「檔案過大,上限為 xxx KB」

1730346129EJ7V.png

檔案的類型

校驗檔案後綴,僅允許上傳白名單類型的文

校驗檔案二進制頭,僅允許上傳檔案後綴與實際內容一致的檔案

  • 白名單(允許上傳中的檔案類型)包括:

jpg , jpeg , gif , bmp , png , pdf , doc , docx , ppt , pptx , xls , xlsx , zip

  • 黑名單(不允許上傳中的檔案類型)包括:

asp, jsp, php, exe

1730346118RWbH.png


注意事項:

如使用者上傳的檔案無法透過校驗,但確實需要上傳相關檔案,可參考以下方案調整。

  • 方案一:臨時關閉「檔案上傳校驗」按鈕,重新上傳檔案。

  • 方案二:透過「fine_conf_entity視覺化配置」插件,修改校驗策略,使得檔案上傳成功。

注:修改 FineDB 資料庫表欄位值的方法請參考 FineDB 常用表欄位修改 。

配置項
規則
WebSecurityConfig.fileInspectorType0

後綴不在白名單內時,直接放行

後綴在白名單內時,需要校驗頭匹配才放行

1

預設值

後綴在白名單且頭匹配的才放行

2後綴不在黑名單內放行

4.2 效果範例

4.2.1 上傳檔案大小校驗

在「管理系統>外觀設定」中,上傳超過 20M 的圖片,彈出提示框「上傳檔案失敗,檔案過大」,檔案上傳失敗。如下圖所示:

4.3.2 上傳檔案類型校驗

進入「公共資料」,選擇一個有管理權限的資料夾(可參見:公共資料管理權限)。點選「建立資料集>Excel資料集」,新增 Excel 資料集。

上傳不支援的檔案格式,如 .zip 檔案,彈出提示框「不支援當前檔案格式,僅支援csv、xls、xlsx格式的檔案,請重新上傳」,檔案上傳失敗。如下圖所示:

4.3.3 上傳檔案的二進制頭校驗

進入「公共資料」,選擇一個有管理權限的資料夾(可參見:公共資料管理權限)。點選「建立資料集>Excel資料集」,新增 Excel 資料集。


非 xlsx 類型的檔案,將其後綴名改為 .xlsx 後上傳。

系統透過校驗二進制頭判斷其實際類型為非 xlsx,不符合 .xlsx 後綴,彈出提示框「上傳失敗,檔案尾碼與實際類型不符」,檔案上傳失敗。如下圖所示:

5. 腳本呼叫公式限制

5.1 功能說明

JS 中使用到FR.remoteEvaluate和FR.remoteEvaluateAsync這兩個API的頻率較高,但這兩個API也存在巨大的安全風險,可能會導致攻擊者實現對資料庫的增刪改查等操作,其風險等級相當於遠端執行。

所以 FineBI 新增了「腳本呼叫公式限制」這一功能,開啟後將限制腳本中有風險的公式呼叫。

注:如果使用者沒有相應使用場景,建議不要隨便關閉該功能,關閉會有上述漏洞的風險。

5.2 設定方法

管理者登入 FineBI 系統,點選「管理系統>安全管理>安全防護」,即可開啟「腳本呼叫公式限制」,如下圖所示:

6. Security Headers

安全頭系列設定,開啟後將給請求頭附加 HTTP Security Headers 屬性,阻止漏洞攻擊。

點選進階設定展開進階防護子功能開關共五個,如下圖所示:

注:當 Security Headers 功能開啟時預設子功能全部開啟,Security Headers 關閉時預設全部關閉,同時不允許開啟進階防護功能。

 

預設開啟的具體設定如下所示:

res.addHeader("X-Content-Type-Options", "nosniff");
res.addHeader("X-XSS-Protection", "1; mode=block");
res.addHeader("X-Frame-Options", "SAMEORIGIN");
res.addHeader("Content-Security-Policy", "object-src 'self'");
res.addHeader("Cache-Control", "no-cache");
res.addHeader("Pragma", "no-cache");
res.addDateHeader("Expires", 0)

6.1 CSP內容安全策略

6.1.1 功能說明

CSP 內容安全策略,類似於白名單,透過在 CSP 中配置白名單,來告訴瀏覽器或者使用者端,哪些東西是被授權執行的,哪些東西是被禁止的。

網站會向瀏覽器發一個 CSP 頭部,來告訴瀏覽器以上資訊,這樣就算攻擊者發現了網站的漏洞,也沒有辦法寫攻擊腳本,因為攻擊腳本不在白名單中。

開啟「CSP內容安全策略」功能後,請求頭部預設增加Content-Security-Policy:object-src 'self'設定,限制所有的外部資源,都只能從當前域名載入。

6.1.2 設定方法

管理者登入 FineBI 系統,點選「管理系統>安全管理>安全防護」,開啟「Security Headers」功能。點選「進階設定」,即可開啟「CSP 內容安全策略」。如下圖所示:

超級管理者可透過「fine_conf_entity視覺化配置插件」修改策略。

注:修改 FineDB 資料庫表欄位值的方法請參考 FineDB 常用表欄位修改

配置項配置值配置範例文法含義
WebSecurityConfig.contentSecurityPolicyHeader

object-src

object-src 'self'Content-Security-Policy: <policy-directive>; <policy-directive>
注:多個用;分號隔開

1)none 表示不執行任何匹配。

2)self表示與當前來源(而不是其子域)匹配。

3)unsafe-inline表示允許使用行內 JavaScript 和 CSS。

4)unsafe-eval 表示允許使用類似 eval 的 text-to-JavaScript 機制

限制<object>、<embed>、<applet>標籤的源地址

且僅允許與當前來源(而不是其子域)匹配

object-srcobject-src uri

限制<object>、<embed>、<applet>標籤的源地址

且上述標籤中地址僅https://example.com/允許載入

default-srcdefault-src https:

禁用不安全的行內/動態執行, 只允許透過 https載入這些資源 (images, fonts, scripts, etc.)

6.2 XSS攻擊防護

6.2.1 功能說明

XSS 是一類攻擊程式的統稱,是攻擊者發現網站漏洞寫的攻擊程式的統稱。這些程式通常是 JS,也可以是 Java,flash,html 等。攻擊成功可以實現:更高的權限,私密的對話,cookie 等。

開啟「XSS攻擊防護」功能後,請求頭部預設增加X-XSS-Protection:1; mode=block設定,啟用 XSS 過濾器,當檢查到跨站腳本攻擊 (XSS (en-US))時,瀏覽器將停止載入頁面。

注:X-XSS-Protection 回應頭是 Internet Explorer,Chrome 和 Safari 的一個特性。

6.2.2 設定方法

管理者登入 FineBI 系統,點選「管理系統>安全管理>安全防護」,開啟「Security Headers」功能。點選「進階設定」,即可開啟「XSS攻擊防護」。如下圖所示:

超級管理者可透過「fine_conf_entity視覺化配置插件」修改策略。

注:修改 FineDB 資料庫表欄位值的方法請參考 FineDB 常用表欄位修改

配置項
配置值文法含義
WebSecurityConfig.xssProtectionHeader0

X-XSS-Protection: 0

禁止XSS過濾

1

X-XSS-Protection: 1

啟動XSS過濾
如果檢查到跨站腳本攻擊,瀏覽器將清除頁面,刪除不安全的部分
1; mode=block

X-XSS-Protection: 1; mode=block

啟動XSS過濾
如果檢查到攻擊,瀏覽器將不會清除頁面,而是阻止頁面載入

1; report=<reporting-uri>

範例:1; report=xss.php

X-XSS-Protection: 1; report=xss.php

啟動XSS過濾

如果檢查到跨站腳本攻擊,瀏覽器將清除頁面,並使用CSP xss.php的功能傳送違規報表

6.3 點選劫持攻擊防護

6.3.1 功能說明

點選劫持(ClickJacking)是一種視覺上的欺騙手段,誘使使用者與隱藏頁面交互,進行危險操作。

攻擊方式如下:

  • 攻擊者使用一個透明的iframe,改寫在一個網頁上,然後誘使使用者在該頁面上進行操作,此時使用者將在不知情的情況下點選到透明的iframe頁面。

  • 攻擊者使用一張圖片改寫在網頁,遮擋網頁原有位置的含義。

開啟「點選劫持攻擊防護」按鈕後,請求頭部預設增加X-Frame-Options:SAMEORIGIN設定,阻止地點內的頁面被其他頁面嵌入。

該回應頭是用來給瀏覽器指示允許一個頁面可否在 <frame>、<iframe>、<embed> 或者 <object> 中展現的標記。地點可以使用此功能來確定網站沒有被嵌入到別人的地點裏面,進而避免點選劫持攻擊。

6.3.2 設定方法

管理者登入 FineBI 系統,點選「管理系統>安全管理>安全防護」,開啟「Security Headers 」功能。點選「進階設定」,即可開啟「點選劫持攻擊防護」。如下圖所示:

QQ20250522-140006.png

超級管理者可透過「fine_conf_entity視覺化配置插件」修改策略。

注:修改 FineDB 資料庫表欄位值的方法請參考 FineDB 常用表欄位修改 

配置項
配置值含義
WebSecurityConfig.frameOptionsHeaderdeny

瀏覽器會拒絕當前頁面載入任何frame頁面

sameorigin表示該頁面可以在相同域名頁面的 frame 中展示

allow-from URL連結

範例:allow-from https://example.com/

表示該頁面可以在指定來源(https://example.com/)的 frame 中展示

6.3.3 注意事項

「點選劫持攻擊防護」開啟後,預設頁面只能在同一個域中載入。

如果使用跨域 iframe 的方式嵌入報表,會出現無法存取報表的情況,關閉 Security Headers 進階設定中的「點選劫持攻擊防護」按鈕即可。如下圖所示:

6.4 內容嗅探攻擊防護

6.4.1 功能說明

MIME 是一種標準,多用途網際網路郵件擴展。它表明了文檔、檔案或各種位元組的性質和格式。

一般情況下,瀏覽器會透過回應頭的 Content-Type 欄位來分辨資源類型。當有些資源的 Content-Type 是錯的或者未定義時,某些瀏覽器會啟用 MIME-sniffing 來猜測該資源的類型,解析內容並執行。

開啟「內容嗅探攻擊防護」後:請求頭部預設增加X-Content-Type-Options:nosniff設定,禁用瀏覽器類型猜測來保證安全性。

6.4.2 設定方法

管理者登入 FineBI 系統,點選「管理系統>安全管理>安全防護」,開啟「Security Headers」功能。點選「進階設定」,即可開啟「內容嗅探攻擊防護」,如下圖所示:

超級管理者可透過「fine_conf_entity視覺化配置插件」修改策略。

注:修改 FineDB 資料庫表欄位值的方法請參考 FineDB 常用表欄位修改

配置項
配置值文法含義
WebSecurityConfig.contentTypeOptionsHeadernosniffX-Content-Type-Options: nosniff

下面兩種情況的請求將被阻止:

1)請求類型是"style" 但是 MIME 類型不是 "text/css"

2)請求類型是"script" 但是 MIME 類型不是  JavaScript MIME 類型

6.4.3 注意事項

「內容嗅探攻擊防護」開啟後,會阻止 MIME 類型不匹配的跨域資源共享。

如果使用者單點登入失敗,在瀏覽器介面 F12 開啟控制台,出現跨域相關報錯,請關閉 Security Headers 進階設定中的「內容嗅探攻擊防護」按鈕。如下圖所示:

33.png

6.5 瀏覽器快取禁用

6.5.1 功能說明

瀏覽器快取禁用包含三個ID:

  • Cache-Control 通用訊息頭欄位,被用於在http請求和回應中,透過指定指令來實現快取機制。快取指令是單向的,這意味着在請求中設定的指令,不一定被包含在回應中。

  • Expires 回應頭包含日期/時間,即在此時候之後,回應過期。無效的日期,比如 0, 代表着過去的日期,即該資源已經過期。如果在Cache-Control回應頭設定了 "max-age" 或者 "s-max-age" 指令,那麼 Expires 頭會被忽略。

  • Pragma 是一個在 HTTP/1.0 中規定的通用標頭,這個標頭的效果依賴於不同的實現,所以在“請求-回應”鏈中可能會有不同的效果。它用來向後相容只支援 HTTP/1.0 協定的快取伺服器,那時候 HTTP/1.1 協定中的 Cache-Control 還沒有出來。

開啟「瀏覽器快取禁用」功能後,請求頭部預設增加Cache-Control:no-cachePragma:no-cache&Expires:0設定。

6.5.2 設定方法

管理者登入 FineBI 系統,點選「管理系統>安全管理>安全防護」,開啟「Security Headers 」功能。點選「進階設定」,即可開啟「瀏覽器快取禁用」。如下圖所示:

超級管理者可透過「fine_conf_entity視覺化配置插件」修改具體策略。

注:修改 FineDB 資料庫表欄位值的方法請參考 FineDB 常用表欄位修改

配置項
配置值配置範例文法含義

WebSecurityConfig.cacheControlHeader

注:瀏覽器快取禁用 Header Cache-Control 的值

no-cacheno-cache

Cache-control: no-cache

在發佈快取複本之前,強制要求快取把請求提交給原始伺服器進行驗證(協商快取驗證)
max-age=<seconds>max-age=3600

Cache-control: max-age=3600


設定快取儲存的最大週期,超過這個時間快取被認為過期(單位秒)

WebSecurityConfig.cacheControlExpiresHeader

注:瀏覽器快取禁用 Header Expires 的值

00Expires: <http-date>代表着過去的日期,即該資源已經過期
<http-date>Wed, 21 Oct 2015 07:28:00 GMT在Wed, 21 Oct 2015 07:28:00 GMT日期後,回應過期

WebSecurityConfig.cacheControlPragmaHeader

注:瀏覽器快取禁用 Header Pragma 的值

no-cacheno-cache

Pragma: no-cache

與 Cache-Control: no-cache 效果一致

強制要求快取伺服器在傳回快取的版本之前將請求提交到源頭伺服器進行驗

7. 請求回應優化

7.1 功能說明

6.0.11 及之後版本的工程預設開啟「請求回應優化」按鈕。

請求回應優化按鈕關閉時,顯示詳細堆疊資訊。若使用者認為顯示具體的堆疊資訊存在安全隱患,可開啟「請求回應優化」按鈕。

請求回應優化按鈕開啟時,提供關鍵報錯資訊,遮蔽具體報錯堆疊。

7.2 設定方法

管理者登入 FineBI 系統,點選「管理系統>安全管理>安全防護」,即可開啟「請求回應優化」,如下圖所示:

7.3 效果範例

範例:在 FineBI 系統新增一個 SQL 資料集,當使用一張不存在的資料表「使用者」時,預覽失敗,點選「詳細資訊」查看預覽失敗原因。

1)未開啟請求回應優化時,點選「詳細資訊」可以查看到具體的報錯堆疊,如下圖所示:

2)開啟後,點選「詳細資訊」只能看到關鍵報錯資訊,錯誤原因為:11300001 資料集配置錯誤

[SQLITE_ERROR] SQL error or missing database (no such table: 使用者)

注1:若使用者想要看到詳細報錯堆疊,關閉「請求回應優化」按鈕即可。

注2:6.0.11 之前版本的工程,開啟「請求回應優化」後,所有堆疊資訊統一轉為簡單的錯誤資訊提示:「請求錯誤,如需查看詳細錯誤資訊請至安全管理頁面進行設定」

555.png

8. Token認證增強

8.1 功能說明

1)Token 是使用者的唯一識別符號。基於 Token 的身分驗證邏輯如下:

  • 首次登入時,使用者端透過帳號和密碼請求登入。

  • 服務端收到登入請求後,對帳號對應的密碼進行查詢並驗證。

  • 驗證成功後,服務端根據使用者資訊,生成一個與該使用者綁定的 Token(令牌:唯一識別符號),下發給使用者端。

  • 使用者端收到 Token 後儲存到本地,每次向服務端請求資源的時需要帶着服務端簽發的 Token。

  • 服務端收到請求,驗證使用者端請求中帶着的 Token,驗證成功,向使用者端傳回請求的資料,驗證失敗傳回錯誤資訊,要求使用者端重新登入。

2)Token 的安全隱患

Token 簽發後,在有效期內始終有效,服務端無法強制讓 Token 失效。

攻擊者竊取到 Token 後,可以在其他機器上傳送請求冒充使用者登入,存在安全隱患。

3)驗證 Token 對應的 IP 地址,防止 Token 被攻擊者劫持盜用。

Token認證增強」按鈕預設關閉。

Token 對應的狀態伺服器中儲存了首次請求登入時對應的 IP 地址。

開啟「Token認證增強」後,伺服器在收到請求後,驗證 Token 和 Token 對應的 IP 地址:

  • 如果當前請求 IP 與 Token 對應的 IP 地址一致,則自動放行。

  • 如果當前請求 IP 與 Token 對應的 IP 地址不一致,則視為非法請求,自動跳轉到登入頁,需要重新登入。

注:對於配置了負載均衡的叢集環境,如需開啟「Token認證增強」,請確定負載均衡策略為ip_hash,以保持對話一致。

8.2 設定方法

管理者登入 FineBI 系統,點選「管理系統>安全管理>安全防護」,即可開啟「Token認證增強」,如下圖所示:

8.3 效果範例

開啟「Token認證增強」後,如果請求 IP 發生變更,系統會彈窗提示「登入資訊已失效,請重新登入」。

點選「確定」後,跳轉至系統登入頁,重新登入即可。如下圖所示:

9. Referer校驗

注:該功能預設不啟用。

9.1 功能說明

HTTP 請求頭中的 Referer 欄位中包含了 HTTP 請求的來源資訊,即使用者是從哪個網頁進入到當前頁面的。

基於 Referer 欄位,在伺服器端設定存取控制規則(如白名單),限制使用者只能從固定網頁跳轉存取伺服器資源,防止伺服器資源被非法盜用。

在 FineReport 中開啟 Referer 校驗並配置白名單後,將根據白名單對訪客的身分進行識別和過濾,防止工程裏的儀表板被直接存取或者被其他網站連結存取。

9.2 設定方法

超級管理者可透過以下配置項修改 Referer 校驗的具體策略。

注:工程 fine_conf_entity 表中預設不存在 Referer 校驗配置項,需手動新增欄位並在重啟工程後生效,新增方法請參考:填報修改fine_conf_entity

配置項
配置值含義/規則
WebSecurityConfig.refererVerifyEnabledtrue開啟 Referer 校驗
false關閉 Referer 校驗(預設值)
WebSecurityConfig.refererWhiteList

格式:["item1","item2"]

範例:["http://localhost:37799","localhost:37799","localhost"]

欄位值為需要配置的白名單內容,Referer 名單間使用逗號進行分隔

只有白名單內的域名能存取當前資源,白名單以外的域名均無法存取當前資源

WebSecurityConfig.refererAllowEmptytrue

請求中的 Referer 欄位為空或無 Referer 欄位時,允許使用者存取當前資源

注:該欄位值固定為 true,即使更改為 false,也會按照 true 的邏輯生效。

9.3 效果範例

點選下載範本:finedb字段修改.cpt

參考 填報修改fine_conf_entity  修改 Referer 校驗的配置項。

注:推薦使用者根據 9.3.2 節,在開啟 Referer 校驗的同時配置白名單,否則會導致無法登入 FineBI 系統,並且無法更改校驗策略,效果如 9.3.1 節所示。

9.3.1 開啟Referer校驗

1)在工程 fine_conf_entity 表中新增「WebSecurityConfig.refererVerifyEnabled」欄位,設定欄位值為true

點選「提交」,重啟工程後配置項生效,開啟 Referer 校驗。如下圖所示:

88.png

2)在瀏覽器端中輸入工程地址http://ip:埠/webroot/decision存取 FineBI 系統,存取失敗,如下圖所示:

3)按 F12 鍵,或者按滑鼠右鍵點選檢查,開啟 Chrome 的控制台,切換至「Network」,查看請求的狀態碼和 Referer 欄位。

查看有 Referer 欄位的請求,由於未配置白名單,白名單的內容為空,不允許所有域名存取當前資源,因此請求異常,傳回 403 狀態碼。如下圖所示:

aaa.png

查看無 Referer 欄位的請求,由於「WebSecurityConfig.refererAllowEmpty」配置項的欄位值固定為ture,允許 Referer 欄位為空或無 Referer 欄位的請求存取當前資源,因此請求成功,傳回狀態碼 200。如下圖所示:

9.3.2 開啟Referer校驗並配置白名單

範例:開啟 Referer 校驗,並設定白名單為["localhost"]。

1)在工程 fine_conf_entity 表中新增以下欄位:

新增「WebSecurityConfig.refererVerifyEnabled」欄位,設定欄位值為true,開啟 Referer 校驗。

新增「WebSecurityConfig.refererWhiteList」欄位,設定欄位值為["localhost"],允許來自域名localhost的請求存取資源。

點選「提交」,重啟工程後配置項生效。如下圖所示:

nnn.png

2)在瀏覽器端中輸入工程地址http://ip:埠/webroot/decision存取 FineBI 系統,存取成功,如下圖所示:

3)按 F12 鍵,或者按滑鼠右鍵點選檢查,開啟 Chrome 的控制台,切換至「Network」,查看有 Referer 欄位的請求。

比如Referer:http://localhost:37799/webroot/decision,域名為localhost,在白名單內,允許存取當前資源。如下圖所示:

9.4 注意事項

若使用者配置了 CAS 單點登入,需要將工程的 URL 和的 CAS 的 URL 都加入白名單,否則會登入失敗。

若使用者配置了跨域單點登入,需要將跨域的兩個工程的 URL 都加入白名單,否則會登入失敗。

如下圖所示:

10. URL分號過濾機制

10.1 功能說明

Tomcat 在解析使用者請求的 URL 時,如果 URL 中包含分號,則 Tomcat 會過濾掉分號與斜槓之間的字串內容(包括分號)並進標準化處理。

攻擊者可以利用分號繞過權限驗證機制,存取敏感資源或執行惡意操作,危害系統的安全性。

6.0.13及之後版本,FineBI新增 URL 配置項,可以禁止在 URL 中使用分號,以防止路徑遍歷攻擊、權限繞過以及 URL 混淆和欺騙等安全問題。

10.2 設定方法

超級管理者可透過以下配置項設定是否允許在 URL 中使用分號。

注:工程 fine_conf_entity 表中預設不存在以下配置項,需手動新增欄位並在重啟工程後生效,新增方法請參考:填報修改fine_conf_entity 。

配置項配置值含義/規則
WebSecurityConfig.allowURLSemicolontrue/未配置參數值(預設情況)

允許在 URL 中使用分號

false

不允許在 URL 中使用分號

10.3 效果範例

10.3.1 允許在URL中使用分號

在未配置「WebSecurityConfig.allowURLSemicolon」參數、或參數值為 true 的情況下,FineReport 允許在 URL 中使用分號作為分隔符。

例如,瀏覽器存取帶分號的URLhttp://localhost:37799/webroot/decision/;12345/login,則 Tomcat 會過濾掉;xxx/分號與斜槓之間的字串內容(包括分號)並進標準化處理。

實際存取效果為http://localhost:37799/webroot/decision/login,可以正常存取工程,如下圖所示:

10.3.2 參數值為false

1)參考 填報修改fine_conf_entity 在工程 fine_conf_entity 表中新增「WebSecurityConfig.allowURLSemicolon」欄位,設定參數值為「false」。如下圖所示:

重啟工程後配置項生效,不允許在 URL 中使用分號。

2)瀏覽器存取帶分號的 URL:http://localhost:37799/webroot/decision/;12345/login,請求錯誤,無法存取工程,如下圖所示:


附件列表


主题: 管理系統
已经是第一篇
已经是最后一篇
  • 有帮助
  • 没帮助
  • 只是浏览
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙