web安全问题
1)SQL注入
定义:攻击方提交一段数据库查询代码,获取他想知道的信息。
原因:
对于输入检查不充分,将用户提交的非法数据当作命令来执行;
部分WEB应用采用Jsp+JavaBean或SSH框架,代码中会有直接写SQL(或HQL)语句,而有些SQL是用拼串实现的。
预防措施
- 严格限定参数类型,明确参数检验的边界,必须在服务端执行数据验证
- 采用参数化查询的方法(推荐)
- 内置过滤系统(本质是黑名单,很常见但是不推荐)
- 数据库加固
2)跨站脚本漏洞(XSS)
定义:攻击方往web页面插入html代码,在用户浏览页面时会执行恶意目的,属于被动攻击。
分类:
持久型XSS(Persistent),与非持久型XSS相反,它是指通过提交恶意数据到服务器,通过Web应用程序输出恶意数据输出到页面,持久型XSS多出现在Web邮箱、BBS、社区等从数据库读出数据的正常页面(比如BBS的某篇帖子中可能就含有恶意代码)
非持久型XSS(Non-persistent),即反射型,它是指那些浏览器每次都要在参数中提交恶意数据才能触发的跨站脚本漏洞。
预防措施
- 过滤:一般需多次过滤,例如<scrip<script>t>过滤掉<script>后还是<script>,且需要注意过滤次序。
- 输入编码:输入编码往往可以有全局的解决方案,从设计的角度来看,这是最佳的。
- 输出编码:
输出编码有助于开发者细粒度控制输出,但也导致了工作量的增加。
输出编码可以解决输入编码无法处理的已入库数据。
- 用户安全加固:不轻信来源不明的url和自动登录信息。
3)跨站请求伪造(XSRF)
定义:获取客户会话或cookies,模仿合理用户,非法查看或变更用户记录和执行操作。
原因:应用程序的验证方法不充分
预防措施
检查http头部:只接受本域请求不接受外域
使用一次性令牌:每次请求都带上一个服务器生成的随机数,由服务器进行检验
使用检验图片:图片验证很难被恶意程序识别
4)文件上传漏洞
- 允许上传可执行文件
- 使用客户端JS验证上传文件类型
- 使用黑名单限制上传文件类型
- 文件名/存储目录名可自定义
- 文件名中特殊字符处理不当
预防措施
首先编码者需要对上传页面代码严格把关,特别是在保存文件的时候,考察可能出现的异常字符,如../,..\,空字符等。
其次,对文件扩展名检查要采取“允许jpg,gif…”这样的检查,而不要采取“不允许asp…”这样的检查;
最好对上传文件的目录设置不可执行,这可以通过web服务器配置加固实现。
原文链接:https://blog.csdn.net/sigmeta/article/details/80412866
浙公网安备 33010602011771号