安全测试培训PPT-安全开发知识
6.1 安全开发过程
6.2 安全功能设计_验证机制安全
限制密码强度
自我注册及密码修改时强制要求强密码;
若被分配默认密码,第一次登陆时要求用户修改密码;
防止暴力破解
登录错误时,错误提示不可具体到错误项;
设置验证码;限制错误尝试次数;
找回密码机制
问题设置应不可枚举;
相关手机号及邮箱应为注册时所填,不能在找回密码时填写;
收到的验证码应有随机性、有时效限制、及尝试次数限制;
用户凭证传输
使用post传输;不可回传;
加密传输,使用加密算法(RSA)或https传输;
前端加密相关代码需做混淆处理,避免被反编译;
6.2 安全功能设计_验证机制安全
修改密码:
限制密码强度;必须先验证原始密码;旧密码尝试次数限制;
密码存储:
密码需加密存储,不可使用纯散列算法(如md5)加密,需加salt;
业务流中的身份验证:
不可通过http头中referer、host,或post数据中userid或step id
等数据来断定当前用户身份或阶段是否合法;
6.2 安全功能设计_会话管理机制安全
要求:
令牌具备随机性、不与生成时间、IP、用户凭证相关联;
用户登录后,应用程序应为其分配新的会话令牌;
登录应用后,长时间未操作,强制用户重新登录;
不可在url中传输会话令牌;
关键业务中需判断referer值,只允许接受来源为本网站的请求;
6.2 安全功能设计_访问控制机制安全
设置合理的访问控制:
不同类型的用户分配不同的角色:管理员、审计员、普通用户;
垂直访问控制:
a、低权限账户不可访问高权限账户特有数据和功能;
b、不可通过修改http报文中参数来越权访问;
平行访问控制:
a、禁止用户访问同级的其他用户的特有数据和功能;
b、不可通过修改http报文中参数来越权访问;
c、若某资源url中id来标识,则资源id不可预测,不可通过遍历可能
的id号来获取其它资源;
上下文访问控制:
多阶段任务中每一阶段都要做访问控制;
6.2 安全功能设计_日志安全
日志信息记录全面:
记录针对登录事件或重要业务事件,事件、来源IP、时间、数据、是
否成功等;
异常日志及时报警:
异常登录事件、异常业务;
6.3 安全编码_验证输入
对所有输入数据进行检查、验证及过滤
输入源举例:
a、命令行:参数数量、数据格式、内容);
b、环境变量:环境变量可能超出期望,格式可能存在危险);
c、文件:不可信任可被不信任用户控制的文件,不可信任临时文件);
d、网络:网络来源高度不可信;
验证时机:
最初接受数据及第一次使用该数据时
6.3 安全编码_SQL注入漏洞
防御方法:输入白名单;参数化查询;
注意:非法字符过滤方式不可完全防止sql注入,且有可能影响应用功能;
参数化查询举例:
6.3 安全编码_跨站脚本漏洞(XSS)
防止跨站脚本漏洞
1、输入白名单;
2、转义:数据在前端页面显示前,使用html编码转义,使得浏览器
将数据作为纯数据显示,而不是作为脚本执行。