Web攻击动机:
- 恶作剧;
- 关闭Web站点,拒绝正常服务;
- 篡改Web网页,损害企业名誉;
- 免费浏览收费内容;
- 盗窃用户隐私信息,例如Email;
- 以用户身份登录执行非法操作,从而获取暴利;
- 以此为跳板攻击企业内网其他系统;
- 网页挂木马,攻击访问网页的特定用户群;
- 仿冒系统发布方,诱骗用户执行危险操作,例如用木马替换正常下载文件,要求用户汇款等
1.SQL注入(SQL Injection)
定义
原因分析
风险
例子:
预防措施
- 严格限定参数类型,明确参数检验的边界,必须在服务端执行数据验证
- 采用参数化查询的方法(推荐)
- 内置过滤系统(本质是黑名单,很常见但是不推荐)
- 数据库加固
2.跨站脚本漏洞(XSS)
定义
分类
持久型XSS(Persistent)
非持久型XSS(Non-persistent)
例子:
预防措施
一.过滤:
- 有时候过滤会导致意外的结果,例如alice’s 变成了alices。
- 有时候需要多次过滤,例如<scrip<script>t>过滤掉<script>后还是<script>。
- 需要注意多个过滤器的先后次序。当多个过滤器一起生效时,有可能后进行的过滤导致前面的过滤失效。例如过滤器1要过滤ABC,过滤器2要过滤DEF,那么ABDEFC在依次通过1,2过滤器后变成了ABC,这样相当于绕开过滤器1。
二.输入编码:
- 输入编码往往可以有全局的解决方案,从设计的角度来看,这是最佳的。
- 一旦数据已经入库,就难以用输出编码处理。
三.输出编码:
- 输出编码有助于开发者细粒度控制输出,但也导致了工作量的增加。
- 输出编码可以解决输入编码无法处理的已入库数据。
四.用户安全加固:
- 小心点击来源不明的URL。
- 对浏览器进行安全加固,例如禁止ActiveX。
- 永远不要点击自动登录信息!
3.跨站请求伪造(XSRF )
风险
可能会窃取或操纵客户会话和 cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务
原因分析
应用程序使用的认证方法不充分
典型攻击方式
- 在页面中加入一个<img>标签,浏览器就会发送一个请求,以获取其src属性引用的值。
- 攻击者将敏感操作的URI作为src
- 继承Cookie,以浏览者的身份作敏感访问并操作
- 危害:在用户无意识情况下进行危险操作
预防措施
检查 HTTP 头部 Refer 信息
Server端在收到请求之后,可以去检查这个头信息,只接受来自本域的请求而忽略外部域的请求
使用一次性令牌
每个请求都带上一个由服务器生成的随机参数。然后在服务器端核对该参数,如果和下发的随机数不同,则可以认为有人在伪造请求。因为攻击者无法知道他本次攻击的http请求需要带什么样的随机数才是有效的。
使用验证图片
图片验证信息很难被恶意程序在客户端识别,因此能够提高更强的保护
判断HTTP请求类型
采用request.getMethod()判断请求的方式是否POST
直接获取数据
对request再次封装,直接获取form的数据不接收URL的 ,request.getForm(“user”)
4.文件上传漏洞
常见的验证错误
- 允许上传可执行文件
- 使用客户端JS验证上传文件类型
- 使用黑名单限制上传文件类型
- 文件名/存储目录名可自定义
- 文件名中特殊字符处理不当
预防措施
- 首先编码者需要对上传页面代码严格把关,特别是在保存文件的时候,考察可能出现的异常字符,如../,..,空字符等。
- 其次,对文件扩展名检查要采取“允许jpg,gif…”这样的检查,而不要采取“不允许asp…”这样的检查;
- 最好对上传文件的目录设置不可执行,这可以通过web服务器配置加固实现。
原文链接:https://blog.csdn.net/sigmeta/article/details/80412866
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/18022