[每周一更]-(第3期):Web开发安全注意事项

在这里插入图片描述

这一期我们来聊聊安全,安全的话题亘古不变,做什么都会涉及到安全层面,特别是现在大家的安全意识都得到了提升,安全防护也越来越重要,最近大家也许也听到过泄露数据事件,可以看到安全大部分是人为造成的,当然我们安全防护工作,不光要管人,还要管机器,本质上就是规范的制定,代码层面:防黑客,防DDoS攻击;安全工作很重要还是不容忽视,服务器安全、数据库安全等都会涉及,今天着重聊下服务开发过程中Web安全方面:

认证与授权

认证:证明你是谁。 会存在的问题:

  • 1、弱密码
  • 2、凭证盗用(cookie)
  • 3、逻辑问题

授权:你被允许做什么。(水平权限、垂直权限)

如何解决:

  • 1、认证与授权分离
  • 2、权限控制在后端
  • 3、使用统一的认证方式(公司的安全部门一般会有统一的管理系统)

信息泄露

  • 1、debug信息泄露(例如console.log打印出来的信息)
  • 2、报错信息(后端返回的错误信息中有敏感内容,例如sql语句)
  • 3、源码暴露(把源码也上传至服务器)
  • 4、安全意识(点击不安全的链接等)

XSS

  • 反射型:如恶意链接。由用户点击触发,一次性完成。
  • 储存型:例如恶意代码被保存至数据库,每当用户请求时都会触发恶意代码
  • DOM型:改变用户dom结构

如何解决:

  • 1、数据类型检查
  • 2、关键标签过滤
  • 3、转义、编码

ps:XSS的类型区分是根据数据流向决定的。例如储存型要经过数据库,反射型直接经过后端返回给浏览器。

XSS介绍

SQL注入

解决方案:

  • 1、参数检查
  • 2、特殊符号转义
  • 3、使用参数绑定或预编译语句(一些sql框架有预编译sql语句的功能,但是并不是所有的语句都可以预编译)

跨站脚本攻击

解决方案:

  • 1、检查referer(该head字段可以被伪造)
  • 2、请求中添加csrf_token
  • 3、重要操作添加二次验证(手机验证码等)

服务端请求伪造

很多web应用都提供了从其他的服务器上获取数据的功能。使用用户指定的URL,web应用可以获取图片,下载文件,读取文件内容等。这个功能如果被恶意使用,可以利用存在缺陷的web应用作为代理攻击远程和本地的服务器。这种形式的攻击称为服务端请求伪造攻击(Server-side Request Forgery)。

  • 1、参数检查
  • 2、检查返回内容(防止返回敏感信息)
  • 3、黑名单限制特定端口与ip
  • 4、返回统一的错误信息

命令执行

  • 1、参数检查
  • 2、谨慎使用危险函数
  • 3、代码与数据做分割(单独处理数据,确保其安全)

重定向被篡改

  • 1、地址校验
  • 2、重定向地址加签名

点击劫持

  • 1、X-Frame-options:Deny、SAMEORIGN、ALLOW_FROM(该头部可以控制页面是否可以被嵌套)
  • 2、操作二次确认

安全开发

  • 1、参数处理:类型检查、 参数过滤(白名单-较安全、黑名单、循环过滤)、转义编码(html转义、js转义、url编码、sql转义:根据语境选择)
  • 2、认证授权:登录认证(逻辑不在前端,敏感数据不在前端,二次验证,返回提示不要太明确,ip控制)
    • sessionId(及时更新删除)
    • 权限控制(最小权限原则)
    • 上传下载(检查文件类型、文件名处理、对文件名中的’…/…/‘做过滤,避免路径穿越,独立服务器)
    • 用户提交
  • 3、账号安全:密码找回(防止请求被篡改)

常见协议安全

本文档通过介绍常见开发过程中因协议配置错误或代码漏洞而导致安全的问题去避免类似现象的发生。 常见开发过程中的协议:

  • HTTPS
  • WebSocket
  • JWT
  • OAuth
  • Json
  • XML

WebSocket 安全

  • 输入未做校验
  • 帧数大小未做限制
  • 最大连接数未做限制,既可以耗尽客户端也可以耗尽服务端
  • 持久链接过多未自动关闭
  • Origin头部未做验证
  • 未采用HTTPS
  • 访问策略未做限制,存在越权现象(授权需由服务端限制)

OAuth 安全

  • 回调域名需要白名单限制访问
  • OAuth Token泄露
  • Refer消息头泄露Authorization Code

JWT安全

JWT是JSON web Token的缩写,它是为了在网络应用环境间传递声明而执行的一种基于JSON的开放式标准(RFC 7519),该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。

  • 严格保护自己的secret_key,防止泄漏
  • 禁止线上站点与测试站点用一套JWT
  • 利用RS算法代替HS算法
  • 线上环境一定要禁止debug
  • 设置较强的secret_key,并且定期更换

Json, XML安全

  • 跨站请求伪造:跨站请求伪造(CSRF)是一种利用站点对用户浏览器的信任而发起攻击的方式。
  • 跨站脚本攻击:注入攻击都是利用系统本身的漏洞向网站注入恶意代码来进行攻击的。

Mysql安全配置

参考:https://www.securitypaper.org/2.sdl规范文档/9-mysql安全配置/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值