反饋已提交
網絡繁忙
為了保證企業應用的安全,FineReport 著重在安全性上發力,從修補漏洞和主動防禦兩個方面去提升應用安全。
出於平台安全性考量,【管理系統】→【安全防護】預設含多個安全功能開關:【Cookie 增強】、【HSTS 設定】、【檔案上傳校驗】、【腳本呼叫公式限制】、【Security Headers】、【請求響應優化】、【Token認證增強】。
功能入口:管理員帳號登入決策平台,點擊【管理系統】→【安全管理】→【安全防護】。如下圖所示。
【Cookie 增強】功能預設關閉,點擊開啓時會對當前網路協議進行檢測。
檢測結果為 https 時,可正常開啓。
檢測結果為 http 時,彈窗提示【檢測到當前協議為 http,未能成功啓用。請確認伺服器開啓 https 後重試】,並開啓失敗,如下圖所示。
HSTS是一種互聯網連結安全機制,全稱叫HTTP Strict Transport Security,即安全傳輸協定。 它告訴瀏覽器只能透過HTTPS存取當前資源,而不是HTTP。
HSTS 設定按鈕預設關閉,伺服器開啓https後方可開啓該按鈕,開啓後將禁止http存取,IE11以下瀏覽器暫不支持此設定。
若當前伺服器協議為http,開啓該按鈕後,提示:【檢測到當前伺服器協議為HTTP,未能成功啓用,請確認伺服器開啓HTTPS後重試】,並開啓失敗,如下圖所示。
【HSTS 設定】按鈕開啓後增加一個【header】:【Strict-Transport-Security:】,預設值爲【max-age=31536000; includeSubdomains】。
超級管理者可透過【fine_conf_entity視覺化配置插件】修改【header】的值。
註1:修改 FineDB 資料庫表欄位值的方法請參考 FINE_CONF_ENTITY可視化配置 。
註2:HSTS 設定暫不考慮自簽章憑證。
配置項
配置範例
含義
WebSecurityConfig.hstsHeader
max-age=<expire-time>
max-age=31536000
設定在瀏覽器收到這個請求後的31536000秒的時間內凡是存取這個域名下的請求都使用HTTPS請求。
max-age=<expire-time>; includeSubDomains
max-age=31536000; includeSubdomains
設定在瀏覽器收到這個請求後的31536000秒的時間內凡是存取這個域名下的請求都使用HTTPS請求 此規則也適用於該網站的所有子域名。
max-age=31536000; preload
設定在瀏覽器收到這個請求後的31536000秒的時間內凡是存取這個域名下的請求都使用HTTPS請求 預載入HSTS。
【檔案上傳校驗】按鈕預設開啓,開啓後對填報及平台外觀配置中上傳檔案的後綴和大小進行校驗。如下表1所示。
檔案上傳校驗開啓後,允許上傳白名單中的檔案型別包括:jpg , jpeg , gif , bmp , png , pdf , doc , docx , ppt , pptx , xls , xlsx , zip。
超級管理者可透過【fine_conf_entity視覺化配置插件】修改檔案上傳校驗型別。相關配置項的可選值及對應的規則如下表2所示。
註:修改 FineDB 資料庫表欄位值的方法請參考 FINE_CONF_ENTITY可視化配置 。
判斷條件
具體設定
判斷上傳的檔案大小
在資料決策系統的【外觀配置】中,禁止上傳超過 20M 的圖片,防止程式掛死。 上傳超出限制大小的圖片,會彈出提示框:爲使顯示效果較佳,請選擇尺寸不小於 1024*768,大小不超過20M的圖片,支援 PNG、JPG 格式。
檔案元件可自行設定檔案的大小限制,超過限制則無法上傳。 上傳超出限制的檔案,會彈出提示框:檔案過大,上限爲 xxx KB。
判斷上傳的檔案型別
預設支援上傳的檔案型別包括: jpg , jpeg , gif , bmp , png , pdf , doc , docx , ppt , pptx , xls , xlsx , zip。
判斷上傳的檔案二進制頭
透過校驗檔案二進制頭,禁止上傳後綴與實際不符合的檔案 例如 a.txt 改爲 a.jpg 後上傳。
值
規則
WebSecurityConfig.fileInspectorType
0
後綴不在白名單內放行,否則校驗頭匹配才放行。
1
預設值,後綴在白名單且頭匹配的才放行。
2
後綴不在黑名單內放行。
JS 中 FR.remoteEvaluate 和 FR.remoteEvaluateAsync 這兩個API的使用頻率較高,但這兩個API也存在巨大的安全風險,可能會導致攻擊者實現對資料庫的增刪改查等操作,其風險等級相當於連線執行。所以 FineReport9.0 和 FineReport10.0 都新增了【腳本呼叫公式限制】這一功能。
當使用者使用了FR.remoteEvaluate和FR.remoteEvaluateAsync這兩個API,如果使用者開啓了腳本呼叫公式限制開關,則效果預覽時彈出提示框資訊:此呼叫存在安全風險,如需使用請在安全管理中修改腳本呼叫公式限制。
設定方法:管理者登入資料決策系統,點擊【管理系統】→【安全管理】→【安全防護】,即可開啓【腳本呼叫公式限制】,如下圖1所示。
範例:新建普通報表。①儲存格 B4 輸入【Test】,在右側屬性面板中點擊【超級連結】,爲儲存格新增JavaScript 腳本,②輸入代碼。如下圖2所示。代碼如下所示。點擊【分頁預覽】,點擊【Test】,彈出提示框資訊,如下圖3所示。
註:如果使用者沒有相應使用場景,建議不要隨便關閉該功能,關閉會有上述漏洞的風險。
var sql = "SQL(\"FRDemo\",\"Select count(*) from sales_basic\",1,1)"; var Count = FR.remoteEvaluate(sql);FR.Msg.alert("提示",Count);[object Object]
安全頭系列設定,開啓後將給請求頭附加 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)
功能簡介:CSP內容安全策略,類似於白名單,透過在CSP中配置白名單,來告訴瀏覽器或者使用者端,哪些東西是被授權執行的,哪些東西是被禁止的。實現方式就是網站向瀏覽器發一個CSP頭部,來實現告訴瀏覽器以上資訊,這樣就算攻擊者發現了網站的漏洞,也沒有辦法寫攻擊腳本,因爲攻擊腳本不在白名單中。HTTP 響應頭Content-Security-Policy允許地點管理者控制使用者代理能夠爲指定的頁面載入哪些資源。除了少數例外情況,設定的政策主要涉及指定伺服器的源和腳本結束點。這將幫助防止跨站腳本攻擊。
設定方法:開啓後,請求頭部預設增加Content-Security-Policy:object-src 'self'設定。超級管理者可透過【fine_conf_entity視覺化配置插件】修改策略。修改 FineDB 資料庫表欄位值的方法請參考 FINE_CONF_ENTITY可視化配置 。
配置值
文法
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-src https://example.com/
限制<object、<embed、<applet標籤的源位址 且上述標籤中位址僅https://example.com/允許載入。
default-src
default-src https:
禁用不安全的行內/動態執行, 只允許透過 https載入這些資源 (images, fonts, scripts, etc.)。
功能簡介:XSS是一類攻擊程式的統稱,是攻擊者發現網站漏洞寫的攻擊程式的統稱。這些程式通常是JS,也可以是Java,flash,html等。攻擊成功可以實現:更高的權限,私密的對話,cookie等。HTTP X-XSS-Protection 響應頭是 Internet Explorer,Chrome 和 Safari 的一個特性,當檢測到跨站腳本攻擊 (XSS (en-US))時,瀏覽器將停止載入頁面。
設定方法:開啓後,請求頭部預設增加X-XSS-Protection:1; mode=block設定。超級管理者可透過【fine_conf_entity視覺化配置插件】修改策略。修改 FineDB 資料庫表欄位值的方法請參考 FINE_CONF_ENTITY可視化配置 。
WebSecurityConfig.xssProtectionHeader
X-XSS-Protection: 0
禁止XSS過濾。
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的功能傳送違規報表。
功能簡介:點擊劫持(ClickJacking)是一種視覺上的欺騙手段。①攻擊者使用一個透明的iframe,改寫在一個網頁上,然後誘使使用者在該頁面上進行操作,此時使用者將在不知情的情況下點擊透明的iframe頁面。②攻擊者使用一張圖片改寫在網頁,遮擋網頁原有位置的含義。③The X-Frame-Options HTTP 響應頭是用來給瀏覽器 指示允許一個頁面 可否在 <frame>, <iframe>, <embed> 或者 <object> 中展現的標記。地點可以透過確定網站沒有被嵌入到別人的地點裏面,進而避免 clickjacking 攻擊。如果使用跨域 iframe 的方式嵌入報表,出現無法存取的情況,請關閉 Security Headers 進階設定中的【點擊劫持攻擊防護】按鈕。
設定方法:開啓後,請求頭部預設增加X-Frame-Options:SAMEORIGIN設定。超級管理者可透過【fine_conf_entity視覺化配置插件】修改策略。修改 FineDB 資料庫表欄位值的方法請參考 FINE_CONF_ENTITY可視化配置 。
WebSecurityConfig.frameOptionsHeader
deny
X-Frame-Options: deny
瀏覽器會拒絕當前頁面載入任何frame頁面。
sameorigin
X-Frame-Options: sameorigin
表示該頁面可以在相同域名頁面的 frame 中展示。
allow-from uri
範例:allow-from https://example.com/
X-Frame-Options: allow-from https://example.com/
表示該頁面可以在指定來源(https://example.com/)的 frame 中展示。
功能簡介:MIME是一種標準,多用途互網路連結郵件擴展。它表明了文檔、檔案或各種位元組的性質和格式。X-Content-Type-Options HTTP 消息頭相當於一個提示標籤,被伺服器用來提示使用者端一定要遵循在 Content-Type 標頭中對 MIME 型別 的設定,而不能對其進行修改。這就禁用了使用者端的 MIME 型別嗅探行爲。單點登入時若報跨域的問題,請關閉 Security Headers 進階設定中的【內容嗅探攻擊防護】按鈕。
設定方法:開啓後,請求頭部預設增加X-Content-Type-Options:nosniff設定。超級管理者可透過【fine_conf_entity視覺化配置插件】修改策略。修改 FineDB 資料庫表欄位值的方法請參考 FINE_CONF_ENTITY可視化配置 。
WebSecurityConfig.contentTypeOptionsHeader
nosniff
X-Content-Type-Options: nosniff
下面兩種情況的請求將被阻止:
請求型別是"style" 但是 MIME 型別不是 "text/css"。
請求型別是"script" 但是 MIME 型別不是 JavaScript MIME 型別。
功能簡介:瀏覽器快取禁用包含三個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-cache、Pragma:no-cache&Expires:0設定。超級管理者可透過【fine_conf_entity視覺化配置插件】修改策略。修改 FineDB 資料庫表欄位值的方法請參考 FINE_CONF_ENTITY可視化配置 。
WebSecurityConfig.cacheControlHeader
註:瀏覽器快取禁用 Header Cache-Control 的值。
no-cache
Cache-control: no-cache
在發佈快取複本之前,強制要求快取把請求送出給原始伺服器進行驗證(協商快取驗證)。
max-age=<seconds>
max-age=3600
Cache-control: max-age=3600
設定快取儲存的最大週期,超過這個時間快取被認爲過期(單位秒)。
WebSecurityConfig.cacheControlExpiresHeader
註:瀏覽器快取禁用 Header Expires 的值。
Expires: <http-date>
代表着過去的日期,即該資源已經過期。
<http-date>
Wed, 21 Oct 2015 07:28:00 GMT
在Wed, 21 Oct 2015 07:28:00 GMT日期後,響應過期。
WebSecurityConfig.cacheControlPragmaHeader
註:瀏覽器快取禁用 Header Pragma 的值。
Pragma: no-cache
與 Cache-Control: no-cache 效果一致。 強制要求快取伺服器在傳回快取的版本之前將請求送出到源頭伺服器進行驗證。
【請求響應優化】按鈕預設關閉。
【請求響應優化】按鈕關閉時,顯示詳細堆棧資訊。
【請求響應優化】按鈕開啓時,所有堆棧資訊統一轉爲簡單的錯誤資訊提示:【請求錯誤,如需查看詳細錯誤資訊請至安全管理頁面進行設定】。
【Token認證增強】按鈕預設關閉。
Token對應的狀態伺服器中的登入資訊會儲存IP。開啓【Token認證增強】按鈕後,伺服器增加IP校驗:IP相同則自動放行。IP不同則識別爲新的使用者端,自動跳轉到登入頁,需要重新登入。
文 檔回 饋
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉