Web开发常见安全问题及解决 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 网站建设 >

Web开发常见安全问题及解决

发表时间:2018-5-22

发布人:葵宇科技

浏览次数:27

Web攻击动机:

  • 恶作剧;
  • 关闭Web站点,拒绝正常服务;
  • 篡改Web网页,损害企业名誉;
  • 免费浏览收费内容;
  • 盗窃用户隐私信息,例如Email;
  • 以用户身份登录执行非法操作,从而获取暴利;
  • 以此为跳板攻击企业内网其他系统;
  • 网页挂木马,攻击访问网页的特定用户群;
  • 仿冒系统发布方,诱骗用户执行危险操作,例如用木马替换正常下载文件,要求用户汇款等

1.SQL注入(SQL Injection)

定义
由于程序中对用户输入检查不严格,用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。
原因分析
其本质是对于输入检查不充分,导致SQL语句将用户提交的非法数据当作语句的一部分来执行。
由于我们的部分WEB应用,采用Jsp+JavaBean或SSH框架,代码中会有直接写SQL(或HQL)语句,而有些SQL是用拼串实现的。
风险
SQL盲注:如果系统屏蔽了详细的错误信息,那么对攻击者而言就是盲注入,可能会查看、修改或删除数据库条目和表
使用SQL注入的认证旁路:可能会绕开 Web 应用程序的认证机制

例子:

预防措施

  • 严格限定参数类型,明确参数检验的边界,必须在服务端执行数据验证
  • 采用参数化查询的方法(推荐)
  • 内置过滤系统(本质是黑名单,很常见但是不推荐)
  • 数据库加固

2.跨站脚本漏洞(XSS)

定义
它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。


分类
持久型XSS(Persistent),与非持久型XSS相反,它是指通过提交恶意数据到服务器,通过Web应用程序输出恶意数据输出到页面,持久型XSS多出现在Web邮箱、BBS、社区等从数据库读出数据的正常页面(比如BBS的某篇帖子中可能就含有恶意代码)
非持久型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服务器配置加固实现。








相关案例查看更多