1. 概述
1.1 版本
FineBI伺服器版本 | 功能變動 |
---|---|
11.0.16 | - |
1.2 應用場景
伺服器端會接受使用者輸入內容,並將使用者輸入作為 Web 應用的一部分。
如果使用者輸入內容中包含惡意代碼,伺服器端會接受並執行惡意代碼,進而導緻資訊公佈,代碼執行等問題。
1.3 功能簡介
11.0.16 及之後版本的工程,新增「使用者輸入校驗」功能。
「使用者輸入校驗」功能預設開啟,對使用者在 FineReport 系統內特定場景的輸入進行校驗,可以有效過濾惡意代碼,確定系統的安全性。
若使用者輸入內容中包含非法內容,在點選「確定」或「儲存」時,會阻止儲存已輸入內容並進行彈窗提示,如下圖所示:
2. 功能介紹
2.1 開啟/關閉校驗
超級管理者可透過修改工程 fine_conf_entity 表中的以下配置項來開啟/關閉使用者輸入校驗。
注:工程 fine_conf_entity 表中預設不存在使用者輸入校驗配置項,需手動新增欄位並在重啟工程後生效。新增方法請參考:填報修改fine_conf_entity
配置項 | 配置值 | 含義 |
---|---|---|
WebSecurityConfig.enableParameterVerify | true | 開啟用戶輸入校驗(預設值) |
false | 關閉使用者輸入校驗 |
2.2 校驗內容
使用者輸入校驗功能開啟後,會對使用者在 FineReport 系統內特定輸入場景的輸入內容進行校驗,具體場景請參考本文 2.3 節。
若使用者輸入內容中包含符合以下正則表式的部分,在點選「確定」或「儲存」時,會阻止「確定」或「儲存」已輸入內容,並會在輸入框上方進行提示:「輸入存在安全非法字元XXX」。
注:當輸入中包含多個非法字元時,僅提示校驗出的第一個非法字元。
校驗型別 | 正則 |
---|---|
非法字元 | " |
< | |
> | |
& | |
非法關鍵字 | /script |
javascript: | |
onblur | |
getRuntime | |
ProcessBuilder | |
java.lang.ProcessImpl |
2.3 校驗場景
模組 | 校驗場景 | 校驗內容 |
---|---|---|
目錄管理 | 新增範本/編輯範本 | 範本名稱、描述 |
新增上報標籤/編輯上報標籤 | 標籤名稱、描述 | |
新增連結/編輯連結 | 連結名稱、描述 | |
新增目錄/編輯目錄 | 目錄名稱、描述 | |
新增首頁/編輯首頁 | 首頁名稱、備註 | |
使用者管理 | 新增使用者/編輯使用者 | 使用者姓名 |
新增部門/編輯部門 | 部門名稱 | |
新增角色/編輯角色 | 角色名稱、角色備註 | |
外觀配置 | 登入頁 | 登入標題 |
平台樣式 | 平台標題 | |
系統管理 | 標準>標準參數 | Servlet路徑名 |
郵箱>發件人賬戶設定 | 郵箱顯示姓名 | |
資料連結 | 資料連結管理>建立資料連結 | 資料連結名稱 |
資料連結管理>重命名資料連結名稱 | 資料連結名稱 | |
伺服器資料集>建立資料集 | 資料集名稱 | |
伺服器資料集>重命名資料集名稱 | 資料集名稱 | |
地圖配置 | 地理資訊>新增目錄 | 地圖名稱 |
地理資訊>重命名地圖名稱 | 地圖名稱 | |
自訂圖片>新增自訂圖片 | 圖片名稱 | |
自訂圖片>重命名圖片名稱 | 圖片名稱 |