权限控制之越权访问漏洞
越权访问是web应用程序中一种常见的漏洞,由于奇存在范围广、危害大,被OWASP列为Web应用十大安全隐患的第二名。
垂直越权访问
越权访问漏洞防范措施
- 前后端同时对用户输入信息进行校验,双重验证机制
- 调用功能前,验证用户是否有权限调用相关功能
- 执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
- 直接对象引用的资源ID要加密,防止攻击者枚举ID,敏感数据特殊化处理
- 永远不要相信用户的输入
水平越权访问漏洞
水平越权是一种“基于数据的访问控制” 设计缺陷引起的漏洞。由于服务端在接收到请求数据进行操作时,没有判断数据的 所属人/所属部门 而导致的越权数据访问漏洞。
敏感数据处理之特殊信息脱敏
数据脱敏是“”。在涉及客户安全数据, 身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。
数据脱敏的重要原则
保持数据原有特征
保持数据之间的一致性
保持业务规则的关联性
多次脱敏之间的数据一致性
敏感数据处理之日志记录脱敏
SQL攻击防御
SQl注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意。
采用sql语句预编译和绑定变量,是防御sql注入的最佳方法。但是不是所有场景都能够采用 sql语句预编译,有一些场景必须的采用 字符串拼接的方式,此时,我们严格检查参数的数据类型,还有可以使用一些安全函数,来方式sql注入。
比如 String sql = “select id,no from user where id=” + id;
在接收到用户输入的参数时,我们就严格检查 id,只能是int型。复杂情况可以使用正则表达式来判断。这样也是可以防止sql注入的。
后端应用防御XSS跨站点脚本攻击及其防御之术
跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。
这里我们分上下文来形成一个防御的解决方案,虽然说在某些特殊情况下依然可能会产生XSS,但是如果严格按照此解决方案则能避免大部分XSS攻击。
原则:宁死也不让数据变成可执行的代码,不信任任何用户的数据,严格区分数据和代码。
XSS 的攻击原理这里不再阐述,详情请移步 WIKI百科 或 百度百科。
既然是将数据给注入到代码里面变成可执行代码,那么我们就找出所有可能的地方,绝大多数XSS发生在MVC模式里面View层。