这里列举5种常见的软件漏洞及其防护对策:
1. SQL注入漏洞:
原理:通过在Web表单中输入恶意SQL代码,来修改SQL语句的原意,访问未授权的数据。
防护:对用户输入的参数进行过滤或校验,避免直接将参数拼接入SQL语句中;使用预编译语句或者ORM工具查询数据库。
2. 缓冲区溢出漏洞:
原理:向缓冲区写入的数据超过缓冲区的实际大小,导致相邻内存被修改或覆盖。可用于执行shellcode注入。
防护:对缓冲区的边界进行检查,避免写入超出边界的数据;使用安全字符串函数代替危险函数;开启堆栈保护等。
3. XSS跨站脚本漏洞:
原理:攻击者在Web页面中嵌入恶意Script代码,当用户浏览页面时,嵌入其中Web服务器或者用户的网页的脚本代码会被执行。
防护:对用户输入的内容进行HTML编码,避免浏览器将其作为可执行代码执行;添加CSP content-security-policy 等。
4. CSRF跨站请求伪造:
原理:攻击者构造链接或表单,诱使用户点击后在用户毫不知情的情况下以用户的身份发送恶意请求。
防护:添加随机token验证以及referer检查;GET请求不产生敏感数据变化;增加CAPTCHA验证等。
5. 权限管理漏洞:
原理:由于权限设置不当,攻击者可以访问victim拥有但originally不具备的权限的资源。
防护:避免过于宽泛的权限分配;根据最小特权原则分配权限;加强对权限变更的审计跟踪等。