Skip to content

WebSecurity

kcp edited this page Nov 21, 2020 · 3 revisions

title: 网络安全 date: 2018-11-21 10:56:52 tags: - 网络 categories: - 计算机基础

目录 start

  1. 网络安全
    1. 中间人攻击
  2. Web安全
    1. Authenticate
      1. OAuth 2.0
      2. JWT
    2. Verfication
    3. SSL TLS
      1. 数字证书
    4. 盗链与防盗链
    5. 工具或平台
  3. 攻击手段
    1. ARP断网攻击
    2. SYNFlood攻击
    3. CSRF
      1. 解决方案
    4. XSS

目录 end|2020-11-17 14:17|


网络安全

PHP安全新闻早8点

中间人攻击

Man in the middle


Web安全

关注常见的比如 XSS CSRF SQL注入 上传等问题的原理和修复方案。还有密码安全也基本上是面试必考点。 作为开发人员,需要详细了解安全问题的原理。 比如XSS的原理是因为用户将它的数据变成了代码,在页面中跑起来了,所以就可以为所欲为。 CSRF则是当用户不知情时,被黑客的网页通过图片、表单等请求时, 用户的登录态(Cookies)在不知情的情况下会被发送到服务器,导致用户在不知情的情况下被利用身份。 点击支持则是网页被嵌入到了其他网站中,并通过视觉隐藏的方式引导用户进行一些不知情的操作。 上传导致的漏洞是因为用户的文件没有做好判断和处理,导致传上来的文件被当成程序执行了。 SQL注入是用户的数据被当成了表示SQL语义的部分,改变了原来的查询语句的语义,从而产生意料之外的结果。 反向代理服务器,构建在web服务器与 客户端之间,保护web服务器,服务器发送到客户端的请求被代理

Authenticate

WWW-Authenticate

参考: 设计安全的账号系统的正确姿势
参考: 即使被拖库,也可以保证密码不泄露

OAuth 2.0

参考: 理解OAuth 2.0


JWT

jwtJSON WEB TOKEN

理解JWT的使用场景和优劣

参考: 开箱即用 - jwt 无状态分布式授权

需要注意的是,不是什么数据都适合放在 Cookie、localStorage 和 sessionStorage 中的。使用它们的时候,需要时刻注意是否有代码存在 XSS 注入的风险。
因为只要打开控制台,你就随意修改它们的值,也就是说如果你的网站中有 XSS 的风险,它们就能对你的 localStorage 肆意妄为。所以千万不要用它们存储你系统中的敏感数据

如何在无状态下,实现修改密码,过期时间等功能的思路,Token中存入: userId 过期时间 密码的部分Hash值


Verfication

最常见和简单的就是 数字验证码, 通常能在一些公共服务的API中发现校验码的存在

CAPTCHA

CAPTCHA 全称 “全自动区分计算机和人类的图灵测试”(Completely Automated Public Turing Test to Tell Computers and Humans Apart)
它是一种区分用户是计算机还是人的计算程序,这种程序生成人类能很容易通过但计算机通不过的测试,并进行判定,人/机进行测试的过程称为一次“挑战”。


SSL TLS

SSL/TLS协议运行机制的概述 SSL,TLS,HTTPS

  • 完善 SSL

数字证书

  1. 基本概念:
    1. CA (Certificate Authority) 证书授权中心,是数字证书发放和管理的机构
    2. 根证书 根证书是CA认证中心给自己颁发的证书,是信任链的起始点。安装根证书意味着对这个CA认证中心的信任。
    3. 数字证书 数字证书颁发过程一般为:
      1. 用户首先产生自己的密钥对,并将公共密钥及部分个人身份信息传送给认证中心。
      2. 认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来。
      3. 认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。

盗链与防盗链

referer 教程

防盗链

  1. 利用 referer 来控制
    1. 实现简单,绕过也简单
  2. 设想 中间使用一个认证中间件(请求静态文件需要携带token,token需要js方式计算获取,且有有效期),提高盗链难度

工具或平台

Official Site


攻击手段

ARP断网攻击

ARP 断网攻击的原理是什么?如何完全防护?


SYNFlood攻击

洪水攻击 参考博客 SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。

参考博客 什么是SYN Flood攻击?

  • Linux:
    • 修改文件 sudo vim /etc/sysctl.conf
    • 将注释取消 修改值: net.ipv4.tcp_syncookies = 0
    • 就能提高并发总量,但是并发量还是不能提高
    net.ipv4.tcp_syncookies = 0  
    #此参数是为了防止洪水攻击的,但对于大并发系统,要禁用此设置
    net.ipv4.tcp_max_syn_backlog=1024
    #参数决定了SYN_RECV状态队列的数量,一般默认值为512或者1024,即超过这个数量,系统将不再接受新的TCP连接请求,一定程度上可以防止系统资源耗尽。可根据情况增加该值以接受更多的连接请求。
    net.ipv4.tcp_tw_recycle=0
    #参数决定是否加速TIME_WAIT的sockets的回收,默认为0。
    net.ipv4.tcp_tw_reuse=0
    #参数决定是否可将TIME_WAIT状态的sockets用于新的TCP连接,默认为0。
    net.ipv4.tcp_max_tw_buckets
    #参数决定TIME_WAIT状态的sockets总数量,可根据连接数和系统资源需要进行设置。 

CSRF

CSRF (Cross Site Request Forgery) 跨站请求伪造

指在一个浏览器中打开了两个标签页,其中一个页面通过窃取另一个页面的 cookie 来发送伪造的请求

例如: A站点某网页 a.html 有一个 image 标签 其 url 是B站点的URL,利用 cookie 会随着当前页面的请求自动发送到服务端的特性,A站点的cookie会发送至B站点

维基百科定义 CSRF | 百度百科 CSRF

[Web 安全] 如何通过JWT防御CSRF web安全之token和CSRF攻击
博客:CSRF漏洞的原理
浅谈CSRF攻击方式
参考提问下的回答

解决方案

token

  • 打开当前页面时服务端先传递一个token给前端,前端后续的请求都需要携带该token(作请求参数或者Header),否则拒绝请求,这样能避免img标签方式的 CSRF

Cookie 中的 SameSite属性 Cookie详情


XSS

Cross Site Scripting 跨站脚本攻击

xss攻击入门
XSS攻击及防御
最新的黑客技术:详解XSS跨站脚本攻击

Summary

Clone this wiki locally