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

Web攻击动机:

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

1.SQL注入(SQL Injection)

定义

原因分析
风险

例子:

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

预防措施

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

2.跨站脚本漏洞(XSS)

定义

分类

持久型XSS(Persistent)
非持久型XSS(Non-persistent)

例子:

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

预防措施

一.过滤:

  • 有时候过滤会导致意外的结果,例如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

(0)
上一篇 2023年9月2日 11:48
下一篇 2023年9月2日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml