抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

系统加密服务-后记

开发中遇到的问题

虽然说用起来直接引入js就能解决进行加密但是在使用过程中还是有很多问题的,这里面列出几个

  • 因为使用第三方校验框架,使得jquery监听form表单失效或者数据没有加密
    我们通过改写校验框架源码来实现,就是在校验中我们设置$.setSubmit(false)不进行提交,在校验通过后进行加密后再提交,设计的框架有jquery.validate,bootstrapValidate,validform 等

  • form 表单中的重复的name值以“,”分割
    原来是这样来写的,以直没有问题,后来有一个很老的系统使用 request.getParameterValues() 方式来获取数组参数,因为解密后是“,”分割的字符串分不开数组和字符串所以对系统进行了重构js全部以数据的形式接收,因为数据形式数据量太大很多都是不重复的,所以就先生成一个JSON数组,然后检查如果是一个的话就将数据去掉,使用原始的JSON形式,如果有重复的name就保留数组,这样加密后就节省了很大的数据传输量

  • pyload处理
    原来只有参数的解密后来发现对于ajax contentType为GBK的获取步到参数,发现是流的形式接收的,就增加了pyload形式,后来又发现上传文件失效了,原来将文件上传解密了,文件上传失败,就判断contentType不能包含multipart/form-data

  • 空对象处理
    因采用了JSON的压缩方式,如果一个参数值为空就不将这个参数传递过去了,因后台没有做任何处理,没有加密前是得到的是空字符串加密后得到的是null,造成了空指针,解决方法是加入了自定义配置默认不将空对象传过去,如果是指定一个配置,就将所以的参数传过去,如果对象为空的也传过去,但这样会造成很大的数据量增加,默认不传递空值的。

  • 其他的各种小问题也很多这里面不列举了

    系统响应情况

    因为引入了前端加密后端解密系统的响应速度肯定会下降,测试人员测试的是否发现系统明显慢了一些

  • 数据量越大的页面提交也越慢

  • 最慢的页面数据量特别大,提交约2分钟左右,加密的参数达到了恐怖了5万个各种各样的参数和值

  • 有些电脑甚至浏览器直接卡死崩溃但一般都能够接受,正常页面能够再1秒内提交响应

    总结

    安全问题解决了,积累了经验,特别累,涉及到十几个服务,三四个月以来几乎天天加班,处理各种各样的问题,后两个月几乎天天上线,回滚,测试人员一遍一遍的测试,线上还是问题不断,被骂了不知道多少遍,总算再规定的期限完成了,来检查的时候也是战战兢兢的,生怕出现问题,总算是完美完成,不辜负几个月的辛苦,拿到了安全证书,这几个月也学到很多知识。


感谢各位查看和评阅
第一次系列的写一些博客,感觉写的很乱,不能很系统的写出来,有什么问题欢迎指正。

评论