针对web应用的攻击模式
- 主动攻击,攻击者通过直接访问web资源把攻击代码传入的攻击模式,需要攻击者能够访问服务器上的资源,常见有SQL注入攻击和OS命令注入攻击;
- 被动攻击,利用圈套策略执行攻击代码的模式,攻击者不直接攻击web应用,常见有XSS和CSRF;
SQL注入
- 把SQL命令插入到表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令;
- 产生原因:不当的类型处理;不安全的数据库配置;不合理的查询集处理;不当的错误处理;转义字符处理不合适;多个提交处理不当;
- 预防:
对用户输入进行校验;
不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取;
不要把机密信息直接存放,加密或者hash掉密码和敏感的信息;
对于异常信息,最好使用自定义的错误信息对原始错误信息进行包装;
OS命令注入攻击
- 执行非法操作系统命令达到攻击目的,只要在能调用shell的地方就存在风险;系统提供命令执行类函数主要方便处理相关应用场景的功能;
- 预防:客户端服务端都过滤;执行命令的参数不要使用外部获取,防止用户构造;
XSS(跨站脚本攻击)
- 指通过存在安全漏洞的web网站注册用户的浏览器内运行非法的html标签或js代码进行的一种攻击;
- XSS是攻击者利用预先设置的陷阱触发的被动攻击;除了在表单中嵌入html或js外,还可能对用户cookie进行窃取攻击;
- 预防:过滤用户输入;编码转义用户输出;设置cookie为httponly;白名单;
CSRF(跨站请求伪造)
- 指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某种状态更新,属于被动攻击;
- 常见途径通过get请求,通过XSS获取cookie进行攻击;
比如用户在没有登出A的情况下,访问B(危险),B要求访问第三方站点A,发起请求,A不直到请求意愿来自用户还是B; - 预防:资源操作请求最好用post方式;检查referer头部;验证码;请求时带上服务端生成token,判断是否一致;