SQL 注入和 XSS 攻击安全问题
SQL注入
背景
- 通过 sqlmap 工具可以看到几种常用注入方式,布尔盲注、时间盲注、报错注入、联合查询注入;
- 对于POST请求,请求没有任何返回数据、请求不会出错得情况下,仍然可以完成注入,并可以导出数据库得所有数据;
解决:
- 使用参数化得查询是最好得堵漏方式;
- 对于JdbcTemplate来说,可以使用“?”作为占位符;
- 对于Mybatis来说,使用“#{}”进行参数化处理;
XSS攻击
- 从根本上、从最底层进行堵漏,进来不要在高层框架层面做,否则堵漏可能不彻底;
- 堵漏要同时考虑进和出,不仅要确保数据存入数据库得时候进行了转义和过滤,还要在去除数据呈现得时候再次转义,确保万无一失;
- 除了直接堵漏外,可以通过一些额外得手段限制漏洞的威力;比如,为Cookie设置httpOnly属性,来防止数据被脚本读取;
- 尽可能限制字段的最大长度,即使出现漏洞,也会因为长度问题限制黑客构造复制攻击脚本的能力;