美文网首页
java基础-安全篇

java基础-安全篇

作者: 巨子联盟 | 来源:发表于2018-07-10 16:19 被阅读0次

什么是Oauth2

Oauth2是一种认证协议,支持第三方系统不知道特定服务提供者的用户名密码的情况下的认证,主要有4种授权方式:

  1. 授权码模式
    主要有3个角色,客户端,资源服务器,认证服务器
  2. 简化模式
  3. 密码模式
  4. 客户端模式
    具体内容可以参考网上赫赫有名的阮一峰大神的博客 理解OAuth 2.0
  • 授权码模式的步骤:
  1. 用户通过第三方应用访问资源受保护的资源,
  2. 资源服务器验证用户未授权,引导其到认证服务器的认证页面.
  3. 用户输入完成,认证服务器验证合法后发放授权码code并跳转自第三方应用
  4. 第三方应用根据返回的code去认证服务器申请访问令牌access_token和更新令牌refresh_token
  5. 认证服务器验证code无误后发放两个令牌,
  6. 第三方根据访问令牌访问受保护的资源.
  • 简化模式是返回一段脚本,根据脚本得到hash值
  • 密码模式不推荐,因用户必须给第三方应用密码
  • 客户端模式其实是第三方应用向服务提供商认证

OAuth2协议为什么会有一个Redirect阶段

  1. 先说一下原理
  2. 为什么要先后两次验证并提交redirect_uri,因为,第一次redirect_uri带回来的是一次性用的code,这个code和对应的redirect_uri相关联,在第二次用code换token时候要验证这个uri是否和刚刚生成code的一致,防止被攻击者修改uri而做到session劫持.

XSS攻击

  1. 什么是XSS攻击
    XSS,跨站脚本攻击,Cross Site Script,通常是指黑客通过"html注入"篡改了页面,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击.
  2. 防御之道
  1. 在展示的时候对一些特殊字符进行转义htmlencode,从而让其不能按照html渲染页面
    2)cookie设置HTTPONLY
    3)富文本中"事件标签"应该被严格控制,比如form,script,iframe,标签使用白名单,可用开源项目AntiSamy

CSRF攻击

  1. 概念
    CSRF,Cross Site Request Forgery,跨站脚本伪造;简单讲就是攻击者盗用了用户身份,以用户的身份操作了受信任的网站;
    过程是:
    1.用户登录一个合法的网站后未退出的情况下又打开了一个恶意网站,
    2.恶意网站中发送了攻击者事先精心准备好的请求,该请求会向用户刚刚登陆的受信任的网站
    3.因为用户刚刚登录并保存了cookie,此时恶意网站中的请求会将cookie带到受信任的网站,从而以用户的身份执行操作.

  2. 防御之道
    1 添加验证码,强制用户与应用进行交互,但该手段影响用户体验
    2 检查referer
    3 使用 csrf token,token足够随机,token保存在session,cookie,header,校验是否和session里面的相等且不能为空

文件上传漏洞

  1. 概念
    上传web脚本能够被服务器解析,
  2. 防御之道
    1 检查文件名后缀,用白名单的方式.
    2 判断上传文件的文件头来验证文件的类型,可以结合使用MIME Type
    3 文件上传的目录设置为不可执行
    4 使用随机数改写文件名和文件路径
    5 单独设置文件服务器的域名

如何解决Cookie盗取问题

  1. 做好XSS和CSRF攻击的防御

相关文章

  • java基础-安全篇

    什么是Oauth2 Oauth2是一种认证协议,支持第三方系统不知道特定服务提供者的用户名密码的情况下的认证,主要...

  • Android(一)--如何学习安卓

    一、java基础 安卓是用java来编写的,所以java对安卓的重要性不言而喻了,但做安卓开发学会安卓基础部分基本...

  • Day 11

    通过越来越深入学习安卓,感觉Java语言还是要好好学,毕竟安卓语言还是要有Java基础的。

  • JAVA学习记录day1

    今天正式开始学习JAVA,从b站的黑马程序员的基础视频开始。Java/安卓开发入门基础视频主要学习了JAVA的发展...

  • Android 面试回顾

    1安卓基础知识 2JAVA基础知识 3算法和数据结构 4职业发展规划相关问题 安卓基础知识 1Activity 任...

  • 1-安卓底层--基础

    1-安卓底层--基础 先看看代码: java 调用 C/C++ 代码 1.TestJni.java 2.编译jav...

  • Java 基础

    Java 基础01Java开发入门 Java 基础02Java编程基础 Java 基础03面向对象 Java 基础...

  • 关于2017年本猿的生存计划

    一、.工作: 安卓基础知识通过阅读和交流梳理了一遍,其中阅读书籍 Java:《THINK IN JAVA 》《He...

  • Android基础

    基础知识 每个应用都有一个或者多个活动 文件结构 src:安卓应用的Java源代码:main:1.1 java目录...

  • 技术体系

    一,java核心 java基础,jvm,算法,多线程,设计模式 Java基础:java基础相关,全栈java基础 ...

网友评论

      本文标题:java基础-安全篇

      本文链接:https://www.haomeiwen.com/subject/aeffpftx.html