安全问题,一个所有互联网公司挥之不去的伤痛,我们也是被捅过之后才知道痛
大致列举一下我们在日常测试工作中应该要注意的安全问题(不涉及拿安全工具描述部分)
1、XSS类:包括存储型和反射型
反射型最容易传播的是搜索URL,注意处理处理这类URL中的XSS风险代码,其中存储型的危害比反射型的危害相对要更大,建议在平台做统一处理
测试代码举例:http://drops.wooyun.org/tips/845
2、前端存在业务校验
任何前端的检验都是为提高用户体验而做,不具体任何安全性。若涉及业务上重要的校验,需要确保前后端都存在统一的逻辑校验
例如:数字大小范围、时间长度范围
3、POST表单冗余数据
POST表单中提交了页面或业务逻辑中不允许直接修改的数据
例如:常用的如手机号、邮箱,修改时会单独跳转到其他页面进行校验,展示时以灰色不可编辑的形式展示在表单中
4、突破搜索参数数量
很多网站都会有搜索,搜索中有很多的条件可选,业务在设计时对部分搜索条件的数量进行了限制
在截获请求之后,对搜索条件进行扩充后并发请求服务器,会对服务器造成比较大的压力,这一条也与前面讲到的<前端存在业务校验>有关联
5、密码类传输
主要涉及注册、登录、修改密码、忘记密码这几类常用操作,传输过程中若使用明文密码是非常不安全的
6、数据操作类带有ID
密切注意编辑、删除操作中带有数据ID的情况,水平越权操作数据,是非常危险的漏洞
7、数据库存储长度
在产品设计时会对数据的可输入在前端做一个长度或输入类型限制,是为了保证更好的用户体验和确保有限的系统开销
在前面我们已经知道前端的限制是没有任何安全意义的,通过工具修改数据类型和长度同样可被正常提交,若出错很有可能会暴露数据库的关键信息
8、重复提交请求|数据数量有限制
对于不允许重复提交的请求和数量有限制的存储,不光在前端做限制,在服务端也在有对应的校验和限制
9、数据回填
将用户输入的数据直接回填在JSP,然后作为标签中某个属性值显示在页面的HTML中,这种情况下如果不作处理,可能有XSS
常见有属性有value和title
10、自动登录
修改密码、重置密码类操作时,一定不要在最后附加一个自动登录的动作。不可将这个判断将给前端或者浏览器
11、撞库
网络上有很多泄漏的账号密码资源,被拿到之后会用于撞库,取得一些网站的用户名密码
这各情况通常的做法是增加操作成本,比如限制每个IP下请求对应接口的次数、出现验证码、锁定账户2小时等
12、暴力破解
重灾区在找回密码验证码,或者其他的任何重要操作需要数字验证码的部分
建议:将验证码复杂度增加(由纯属4位数据变成6位数字和字母组合),同时加上图形验证码,同时最好有其他访问防爆或监控机制