1. 程式人生 > >專案遷移總結

專案遷移總結

1.多語言儲存型別,儲存方式:公共欄位一條記錄儲存,相同欄位不同型別,單獨一張表儲存。
2.安全問題:
1).XSS攻擊
a.純文字內容:Jsoup.clean(content, Whitelist.none()),只保留文字內容,會把html輸入中的文字抽取出來。
b.儲存指定指令碼:Jsoup.clean(html, baseUri, Whitelist.basic());
c.輸入url校驗:判斷是否是http或者/開頭,如果不是,新增/線,然後儲存到資料庫。
2).上傳圖片網址限制:對於上傳的圖片、視訊等地址,應該做限制,只有上傳到指定伺服器的url才是合法的,或者只有指定的某些連結開頭的連結地址,才是合法的。
3).(轉義後)儲存html:
StringEscapeUtils.unescapeHtml(str):還原特殊字串
StringEscapeUtils.escapeHtml(str):轉移特殊字串
4).上傳次數限制:限制指定時間內,提交的頻率。如果提交頻率過高,為非法請求。可以通過redis實現。
5).防止重複提交:如果提交內容完全相同,限制提交內容
6).防止使用者通過id,直接訪問刪除、未審批通過的專案
7).當前使用者資訊儘量從後臺獲取,不要讓前端當引數傳過來。存在被串改的風險。
8).即使是合法使用者,也要判斷使用者許可權範圍。當前操作的專案,是否是他自己提交的專案。
9).校驗使用者上傳檔案型別。contextType 和 字尾型別。列舉列出所有後綴和型別的關係,然後通過後綴名,獲取contextType型別,對比是否正確。
10).CSS注入攻擊:
"coverUrl":"http://1253283450.vod2.myqcloud.com/29a3dba0vodgzp1253283450/891f16e65285890783592877488/5285890783592887528.jpg);width=1000px;position:absolute;height:1000px;x:(1"
修復建議:使用str.replace對返回字串中加增實體化編碼 ) => )
11).在沒有必要輸入應為空號的地方,轉義小括號。
3.Whitelist:
Whitelist.none():不包含任何html標籤
Whitelist.basic():只包含一些基本的html標籤
Whitelist.basicWithImages():包含一些基本的html標籤,和圖片標籤。
注意:圖片的路徑必須是http開頭的絕對路徑,不允許相對路徑,相對路徑的src會被清除。可以通過baseUri補全圖片地址連結。
4.遷移專案要先熟悉別人專案資料庫中的表
5.ValidationUtil.validate(dto); 利用net.sf.oval.Validator校驗資料合法性。


圖片、視訊、報告等連結:
1.判斷是否是http或者/開頭,如果不是,簽名新增/
2.網址一般不會有括號:替換英文)為=> ),防止CSS注入攻擊
3.如果是需要上傳到自己伺服器的照片、視訊、報告等,限制圖片地址字首
4.直接輸入的網址,例如:官網等欄位,做XSS過濾


富文字介紹處理:
1.轉義特殊字串儲存到資料庫。
2.替換英文括號為中文括號?
3.