SQL 注入和 XSS 攻击安全问题


SQL注入

背景

  • 通过 sqlmap 工具可以看到几种常用注入方式,布尔盲注、时间盲注、报错注入、联合查询注入;
  • 对于POST请求,请求没有任何返回数据、请求不会出错得情况下,仍然可以完成注入,并可以导出数据库得所有数据;

解决:

  • 使用参数化得查询是最好得堵漏方式;
  • 对于JdbcTemplate来说,可以使用“?”作为占位符;
  • 对于Mybatis来说,使用“#{}”进行参数化处理;

XSS攻击

  • 从根本上、从最底层进行堵漏,进来不要在高层框架层面做,否则堵漏可能不彻底;
  • 堵漏要同时考虑进和出,不仅要确保数据存入数据库得时候进行了转义和过滤,还要在去除数据呈现得时候再次转义,确保万无一失;
  • 除了直接堵漏外,可以通过一些额外得手段限制漏洞的威力;比如,为Cookie设置httpOnly属性,来防止数据被脚本读取;
  • 尽可能限制字段的最大长度,即使出现漏洞,也会因为长度问题限制黑客构造复制攻击脚本的能力;

相关