web安全

针对web应用的攻击模式

  • 主动攻击,攻击者通过直接访问web资源把攻击代码传入的攻击模式,需要攻击者能够访问服务器上的资源,常见有SQL注入攻击和OS命令注入攻击;
  • 被动攻击,利用圈套策略执行攻击代码的模式,攻击者不直接攻击web应用,常见有XSS和CSRF;

sql注入

SQL注入

  • 把SQL命令插入到表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令;
  • 产生原因:不当的类型处理;不安全的数据库配置;不合理的查询集处理;不当的错误处理;转义字符处理不合适;多个提交处理不当;
  • 预防:
    对用户输入进行校验;
    不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取;
    不要把机密信息直接存放,加密或者hash掉密码和敏感的信息;
    对于异常信息,最好使用自定义的错误信息对原始错误信息进行包装;

  通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

OS命令注入攻击

  • 执行非法操作系统命令达到攻击目的,只要在能调用shell的地方就存在风险;系统提供命令执行类函数主要方便处理相关应用场景的功能;
  • 预防:客户端服务端都过滤;执行命令的参数不要使用外部获取,防止用户构造;

  防止sql注入,我们应该注意:

XSS(跨站脚本攻击)

  • 指通过存在安全漏洞的web网站注册用户的浏览器内运行非法的html标签或js代码进行的一种攻击;
  • XSS是攻击者利用预先设置的陷阱触发的被动攻击;除了在表单中嵌入html或js外,还可能对用户cookie进行窃取攻击;
  • 预防:过滤用户输入;编码转义用户输出;设置cookie为httponly;白名单;

    1.永远不要信任用户的输入,要对用户的输入进行校验,可以通过正则表达式,或限制长度,对单引号和双”-“进行转换等。

CSRF(跨站请求伪造)

  • 指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某种状态更新,属于被动攻击;
  • 常见途径通过get请求,通过XSS获取cookie进行攻击;
    比如用户在没有登出A的情况下,访问B(危险),B要求访问第三方站点A,发起请求,A不直到请求意愿来自用户还是B;
  • 预防:资源操作请求最好用post方式;检查referer头部;验证码;请求时带上服务端生成token,判断是否一致;

    2.永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取。

    3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。

    4.不要把机密信息明文存放,请加密或者hash掉密码和敏感的信息。

    5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装,把异常信息存放在独立的表中。

  处理办法:

    1.通过正则表达校验用户输入,过滤掉可能的 sql注入

    2.通过参数化存储过程进行数据查询存取

    3.参数化SQL语句

    ……

 

xss攻击:跨站脚本攻击