Security相关的知识
- 面临的security的威胁
- Security的主要的种类
- XSS
- CSRF
- XXE
- SQL Injection
- Insecure Deserialization
- 总结
面临的security的威胁
在我们这个时代,每个系统都面临着被黑客入侵的危险,黑客入侵成功就有可能得到很大的收益,而且这种攻击可以是跨国的,所以追踪起来比较困难,黑客受到惩罚的可能性很小,所以他们也越来越有动力做这些事情。这就对系统的创建和维护者提出了更高的要求。
每次security导致的问题都会造成巨大的损失,这对整个开发团队都是暴击。每次被攻击成功,公司从上层到下层都会有人被牵连。
Security的主要的种类
Security的种类有很多,但是我们一般比较常见的大概有几类。
- XSS
- CSRF
- XXE
- SQL Injection
- Insecure Deserialization
XSS
XSS(Cross-Site Scripting),比较常见的
<script>alert()</script>
<img scr="" onerror=alert()>
一般防范这种有下面几种方法
- escape,让这些<>脚本相关的标签失效。
- validation,对于特殊的一些字符<>等做校验,需要注意的是<>这些有很多的表达方式,比如
<≶﹤﹥
等。 - 消除这些特殊的字符。
CSRF
CSRF(Cross-site request forgery),这种攻击一般会采用from表单提交的方式,这样可以避开跨域问题。而对于这种问题的防范:
- 验证cookie信息
- 验证header里面的referer属性
- 惊醒form表单的提交
XXE
XXE(XML External Entity)
xml的entity分为三类,
- 外部entity
- 内部entity
- 参数entity
经常遇到的xxe攻击基本都是XXE攻击,
- 防止XXE攻击一般都是禁用掉external entity
- 一般要关注第三方的包,跟着它们最新的版本升级,不然会错过一些问题的修复
SQL Injection
sql injection也是一个非常常见的问题,对于这个攻击有一个专门的软件:sqlMap, 可以从github上面得到这个软件,它可以模拟SQL Injection,
https://github.com/sqlmapproject/sqlmap.git
对于sqlInjection的防御方法还是不少的。
- 不要自己尝试实现这些SQL,使用那些经过检验的框架。
- 尽量限制每次查询的条数,这样就可以精确控制。
Insecure Deserialization
这里以Java举例,Deserialization就是从序列化的数据转换为Java对象的过程。这个转换过程中就可以被注入一些攻击代码。最近FastJson经常被曝这些问题。而对于这类问题的防御和修复手段:
- 了解自己使用的API,判断是否会有这种风险
- 要经常关注使用的第三方库,保持合适的更新频率。
总结
虽然黑客的攻击我们不能完全都预料到,但是我们要尽量去防范那些高风险,那些会对我们造成重大损失的风险。平时不注意这些,等真正遇到攻击的时候我们就追悔莫及了。