zoukankan      html  css  js  c++  java
  • 项目迁移总结

    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

     

  • 相关阅读:
    B. Shift and Push
    Codeforces Round #392 (Div. 2)
    D. Make a Permutation!
    C. Bus
    B. Polycarp and Letters
    A. Fair Game
    python-随机数的产生random模块
    python的时间处理-time模块
    python-迭代器与生成器
    python-装饰器
  • 原文地址:https://www.cnblogs.com/Jtianlin/p/10152096.html
Copyright © 2011-2022 走看看