网站开发安全心得

1、漏洞

1.1、绕开漏洞

1、避免短信、邮件炸弹:控制短信、邮件发送数量限制、短信、邮件发送前最好校验1分钟有效图形验证码,验证码(短信、邮件验证码)校验成功后必须失效,防止用同一个验证码多次校验。
2、表单重复提交:做好按钮控制,提交统一用验证码做校验。
3、页面需要展现什么信息,后台传什么信息,不需要的不传到页面。
4、敏感信息做加密处理,尤其用户信息、尽量避免用户id做参数传输,如必要,则用户id也需要做处理。
5、有下一步操作,在最后一步提交时,把前几步的校验信息在最后提交也要校验,避免绕过上一步校验直接进入最后一步。
6、xss防御:xss是很常见、很普遍,但又很容易规避的漏洞,在filter上配置xss过滤器,有效范围所有请求。在编码上避免传参到后台,通过框架addJSTL(“”,“”)方法又传到前台,如必要,则通过org.owasp.encoder.Encode处理,可以防止xss攻击。具体写法参考:https://www.owasp.org/index.php/OWASP_Java_Encoder_Project#tab=Use_the_Java_Encoder_Project

1.2、源码漏洞

1、加密规则尽可能少用DES规则,AES = 3DES ,使用CBC增加强度;
2、文件上传时需要校验文件路径,避免文件相对路径方式上传使服务器文件被删或被动做其他操作使服务器不能用;
3、文件下载时需要校验文件名称,避免在名称上注入脚本,使文件下载的同时执行注入的脚本弹出违规内容等;
4、mybities Mapper文件里尽可能不出现${}不编译的传参方式;
5、与用户等敏感信息相关的查询、更新、删除等操作时尽量避免单参数操作,尤其是id,选择组合形式比如id+usercode等,提高安全系数;

2、缓存的使用:

在外网尽可能减少对数据库的连接,所以会用到其他技术替代这一操作:索引、缓存等。缓存在网站上的使用会很频繁,主要使用在:

2.1、验证码(短信、邮件、图片验证码校验,减少计算代码)

2.2、频繁查询不长变更的结果集(提高网站性能)

2.3、短时间的权限控制(用户登录密码锁定)

3、数据安全

对敏感数据落地到库需要做加密处理,页面需要什么数据传输什么数据,避免整个对象传输。

推荐加密方法:国密加密

可逆加密:SMS4 (看情况可增强规则AES+CBC)
框架集成 (str:加解密字符串;key:秘钥空则默认;code:解密字符串编码,如UTF-8)
加密:SMS4Util.encodeSMS4(str)/ SMS4Util.encodeSMS4(str,key)
解密:SMS4Util.decodeSMS4toString(str,code)/SMS4Util.decodeSMS4toString(str,key,code)
不可逆加密:SMS3
框架集成 SM3Util.encodeSM3(str)

页面显示敏感信息需要脱敏处理

对输出的数据进行脱敏处理后,向用户展示,脱敏范围应不少于 50%,常见用户隐私信息脱敏规则
如下:
l 中文姓名脱敏 李* 保留第一位,后面以替换;
l 公民身份号码脱敏***********5762 保留后 4 位;
l 固定电话脱敏 ****1234 保留后 4 位;
l 手机号码脱敏 1*********34 保留第一位,后面保留 2 位;
l 地址脱敏 北京市海淀区**** 保留前 6 位;
l 电子邮箱脱敏 g***@163.com ***@后面的部分;
l 银行卡号脱敏 622260*********1234 保留前 6 位后 4位;
l 公司开户银行联号脱敏 12********* 保留前 2 位;
l 时间类的处理,建议脱敏规则为:入参 yyyymmdd(没有下划线,中划线)****1234 保留后 4 位,可根据不同业务需求场景自行判断是否脱敏

发布了7 篇原创文章 · 获赞 2 · 访问量 5156

猜你喜欢

转载自blog.csdn.net/u010715243/article/details/104773172