项目迁移总结

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.替换英文括号为中文括号?

 

 

1. 熟悉业务

2. 熟悉数据库表

3. 数据迁移方案

4. 多项目模块跳转的,需要提前联调

 


数据迁移:

1. 主键统一加一个值

2. 明确哪些值不能变。例如主键,可能在其他地方存储有用。

3. 先把老的数据表和新的数据表,导入到一个数据库。然后用一个SQL把所有数据查询出来,然后通过insert into ,通过SQL命令把数据导入。

4. insert into destinationTabelName (field1,field2,field3...) select field1,field2,field3... from sourceTableName

 

posted @ 2018-12-20 20:26  Jtianlin  阅读(1032)  评论(0编辑  收藏  举报