首页 > 其他分享 >【HTTP完全注解】Web常见攻击与防护手段

【HTTP完全注解】Web常见攻击与防护手段

时间:2024-03-18 13:29:35浏览次数:23  
标签:Web HTTP 会话 攻击 网站 Cookie 使用 注解

Web常见攻击与防护

前段时间深入的学习了下HTTP的CSP策略,就想着找几个网站练练手,看看哪个倒霉蛋要中招。说巧不巧打开掘金一看,嘻嘻正是我想要的,于是乎就诞生了一个有意思的攻击示例:攻击掘金示例(大家放心访问不造成任何安全风险)。

相信大家看源码之后恍然大悟,并且不屑一顾,我想掘金肯定也是怎么想的,但勿以风险小而不防呀!多少安全事故都是一些细枝末节的风险引起的,但导致了巨大损失!因此我觉得很有必要跟大家一起学习下现在较为常见的攻击以及一些相关的防护手段,以便于减少网站的安全风险,防范于未来!

我们如何得知近期常见的安全风险?

我们都知道攻击方式往往是随着时间而不断进化和变更的,我们如何得知近期最有威胁的攻击方式呢?答案就是OWASP每几年发布的《OWASP Top Ten》OWASP是一个由Open Web Application Security Project(OWASP)组织的关于Web应用安全的开放社区。该社区每几年都会发布一个十大Web应用安全风险,以反映新的威胁和漏洞,帮助开发人员、安全专家和组织识别和解决这些风险。想要保持Web应用的安全性,我们应该定期查阅了解这些常见的安全风险。

常见的攻击以及防护手段

MitM

MitM(Man-in-the-Middle Attack,中间人攻击,简称MitM攻击)是一种常见的网络攻击方式,攻击者通过在通信过程中插入自己作为中间人的角色,窃取或篡改通信内容。MITM攻击的基本原理是攻击者在通信的两端之间插入自己的存在,使得双方都认为他们在与对方直接通信,但实际上所有的通信都经过了攻击者的窃听和干扰。

防范手段:

  • 将所有HTTP升级为HTTPS,如果无法升级HTTPS请自行妥善加密请求内容
  • 设置HTTP响应标头Strict-Transport-Security字段,要求浏览器在与特定网站通信时强制使用HTTPS连接,并向Google提供的HSTS预加载列表站点提交你的域名,以申请加入HSTS预加载列表中

详细了解MitM可看我的这篇文章

XSS

XSS(Cross-Site Scripting,跨站脚本攻击,简称XSS)攻击是一种利用网页应用程序的安全漏洞的攻击方式,攻击者通过在网页中注入恶意脚本代码,使其在用户的浏览器中执行。这些恶意脚本可以用来窃取用户的敏感信息、篡改网页内容或进行其他未经授权的操作。

防范手段:

  • 用户输入数据以及动态渲染用户输入数据时要严格验证、过滤以及转义

    确保用户提交的数据符合预期的格式和类型,拒绝不合法的输入,在将用户输入插入到HTML、JavaScript、CSS或其他上下文中之前,要对数据进行严格验证、过滤以及转义,防止浏览器将输入识别为可执行脚本。

  • 切勿滥用任何动态渲染、插入、执行js、css以及html的方法,慎用任何序列以及反序列化的方法

    在使用上述方法时一定要仔细思考是否一定要使用这些方法才能满足需求,如若不是最好不要使用,非要使用一定要仔细验证数据来源是否已经经过严格的验证、过滤以及转义。

  • 选择受信任的源(如官方仓库或社区维护的库)的依赖,定期审查项目依赖的安全风险

    避免使用来自不明来源、未经验证或不活跃维护的依赖项,因为这些依赖项可能包含安全漏洞,项目依赖需要定期监控和更新,因为漏洞和安全问题可能随着时间而出现。

  • 使用内容安全策略(CSP)

    使用CSP指定浏览器应该如何处理页面中的内容和资源,告诉浏览器哪些来源是受信任的,哪些操作是允许的,以此增强Web应用程序的安全性,减少或防止跨站脚本攻击(XSS)和其他类型的注入攻击。

详细了解XSS可看我的这篇文章

各类注入攻击

各类注入攻击(如SQL、NoSQL、OS等注入攻击),其本质与XSS攻击相同,也是一种利用网页应用程序的安全漏洞的攻击方式,它通过在网页中注入恶意脚本代码,只不过这些恶意代码不在浏览器运行,而是在服务器中运行。它的防范手段与XSS相同,但CSP并不能防范这类攻击。

防范手段:

  • 用户输入数据以及动态渲染用户输入数据时要严格验证、过滤以及转义

    确保用户提交的数据符合预期的格式和类型,拒绝不合法的输入,在将用户输入插入到HTML、JavaScript、CSS或其他上下文中之前,要对数据进行严格验证、过滤以及转义,防止浏览器将输入识别为可执行脚本。

  • 切勿滥用任何动态渲染、插入、执行js、css以及html的方法,慎用任何序列以及反序列化的方法

    在使用上述方法时一定要仔细思考是否一定要使用这些方法才能满足需求,如若不是最好不要使用,非要使用一定要仔细验证数据来源是否已经经过严格的验证、过滤以及转义。

  • 选择受信任的源(如官方仓库或社区维护的库)的依赖,定期审查项目依赖的安全风险

    避免使用来自不明来源、未经验证或不活跃维护的依赖项,因为这些依赖项可能包含安全漏洞,项目依赖需要定期监控和更新,因为漏洞和安全问题可能随着时间而出现。

点击劫持

点击劫持(Clickjacking)是一种Web应用程序安全漏洞,旨在欺骗用户,使其在不知情的情况下执行某些意外的操作,通常是通过将透明的或隐藏的页面元素覆盖在诱导用户单击的元素上来实现的。点击劫持的攻击者可以操纵用户的行为,例如单击恶意链接、提交表单或进行其他操作,而用户认为他们正在与合法的网站或应用程序进行交互。

感受点击劫持攻击

防范手段:

  • 设置CSP中的frame-ancestors属性

    通过设置frame-ancestors属性定义哪些网页可以使用 iframe、frame、object、embed 等元素嵌套显示当前页面,以此来防止恶意网站嵌套页面发起恶意攻击。

  • 不使用Cookie认证身份或保持会话

    Cookie的存储方式不同于Web StorageIndexedDB的存储方式是以源进行分割的,因此如果你的网站使用了Cookie认证身份以及保持会话,那么当恶意网站嵌入您的网站时会与你的网站共享Cookie,这也意味这如果你登陆了你的网站,那么访问恶意网站时,它嵌入的网站也是登录状态。而点击劫持攻击最重的是嵌入的网站能够保持登录状态,因此使用Cookie认证身份或保持会话会有造成该攻击的安全风险,为了减轻这些风险你可以使用Authorization认证身份或保持会话。

CSRF

CSRF(Cross-Site Request Forgery,跨站请求伪造,简称CSRF)是一种利用Web应用程序中的信任关系的攻击方式,攻击者通过某些方式(例如社交媒体、广告等)诱骗受害者访问恶意网站,恶意网站利用受骗者已登录的身份信息隐式发送敏感操作的请求,由于该受骗者已登录该网站因此该请求则会自动携带该用户的身份信息,由于身份信息正确服务器也会执行相应的敏感操作,这样用户在访问浏览恶意网站时并不需要任何操作,神不知鬼不觉的情况下就被攻击了,执行了恶意操作。

防范手段:

  • 使用CSRF令牌: 在每个敏感操作的请求中包含一个随机生成的CSRF令牌,该令牌只有在请求发起页面和接收页面具有相同的令牌时,请求才会被接受。这可以确保只有合法的请求才能成功。
  • 检查Referer头: 服务器可以检查HTTP请求头中的Referer字段,以确保请求来自期望的来源。然而,这种方法并不总是可靠,因为Referer字段可能被篡改或缺失。
  • 使用合理的请求方式: 由于获取资源等不被同源策略限制的请求通常是Get方法,因此我们应当合理定义敏感操作的请求方法(如:Post等),即可规避利用该方法发起的CSRF攻击
  • 慎用JSONP等跨源访问手段,改用CORS: JSONP(JSON with Padding)是一种跨源访问手段,它允许在浏览器中加载来自不同域的数据,它在早期的网络应用中很常见。攻击者可以利用这种机制来发起CSRF攻击,通过向目标网站发送JSONP请求,以触发未经授权的操作。CORS 是一种用于解决跨源网络访问问题的标准化机制。服务器可以通过设置HTTP响应头来明确指定哪些域名的网页可以访问其资源。这样,只有被授权的域名才能够进行跨源访问。
  • 使用Cookie认证身份或保持会话需要设置其SameSite等相关安全属性,最好还是使用Authorization认证手段: 确保使用Cookie进行身份认证和会话管理时,设置Cookie的SameSite属性,以限制跨站点请求。
  • 同源策略的合理利用: 尽量在应用中合理利用同源策略,将敏感操作限制在同一域内进行,从而降低跨域请求的风险。

详细了解CSRF可看我的这篇文章

会话劫持

会话劫持(Session Hijacking)是一种较为常见的Web攻击,攻击者通过尝试获取或窃取合法用户的会话标识,然后使用这些标识来模拟合法用户,绕过身份验证并获得对用户帐户的访问权限来发起攻击。这种攻击通常发生在会话标识以Cookie或URL参数的形式存储在客户端的网站,由于URL参数以及Cookie如果未设置相关的安全属性是很容易暴露的,因此攻击者可以使用不同的技术和手段来实施会话劫持。并且该攻击通常需要于其他攻击配合使用,例如:MitM、XSS、点击劫持等。

防范手段:

  • 防护MitM的手段
  • 防护XSS的手段
  • 防护点击劫持的手段
  • 使用Cookie认证身份或保持会话需要设置其SameSite等相关安全属性,最好还是使用Authorization认证手段: 确保使用Cookie进行身份认证和会话管理时,设置Cookie的SameSite属性,以限制跨站点请求。
  • 定期更改会话标识: 会话标识的定期更改可以减少会话劫持的风险。

如何知道自己的网站是否安全

目前我主要使用的工具是Mozilla Observatory,Mozilla Observatory是一个由Mozilla维护的在线Web安全检测工具,它能够检测出我们的网站是否使用安全的加密传输、评估HTTP头部的配置,包括CSP、X-Content-Type-Options、X-Frame-Options等、检查敏感数据的存储和传输方式以及跨站脚本(XSS)、SQL注入、XXE等常见漏洞。根据检测的结果,它还会给出相应的改善建议,然后我们就可以通过这些建议调整服务器配置、修复代码漏洞、更新依赖项。

Mozilla Observatory虽然是一个有用的工具,可以帮助我们快速评估和改善Web应用程序的安全性。但请注意,Mozilla Observatory只是一个工具,它并不能解决所有安全问题。因此我们并不是说使用了它就能杜绝一切安全问题,维护Web应用程序的安全性需要综合性的措施和定期审查。

点击链接或微信搜索“汪啊汪” ,关注我及时掌握最新动态

完整手册可关注该仓库,如有帮助,麻烦给个✨

该站点也会同步更新,已满足PWA,您可安装到桌面随时访问

转载需要经过本人同意,并标明出处!

本文由mdnice多平台发布

标签:Web,HTTP,会话,攻击,网站,Cookie,使用,注解
From: https://blog.csdn.net/qq_40160730/article/details/136697525

相关文章

  • [web-front-end] Web前端(1)Vue项目目录结构 [转]
    0序因近期接触开源项目,需温故、了解一下基于Vue框架等前端工程的目录结构。本文属于笔记类博文,非原创,主要阅读对象:博主本人。1Vue项目目录结构1.1目录结构Vue项目的目录结构通常是由VueCLI(Vue命令行界面)生成的默认结构,它提供了一个基本的项目框架。以下是一个典型......
  • golang fasthttp服务端的简单实现
    使用示例:packagemainimport("github.com/buaazp/fasthttprouter""github.com/valyala/fasthttp""log")funcmain(){//创建路由r:=fasthttprouter.New()r.GET("/",Index)iferr:=fasthttp.Listen......
  • Swoole 源码分析之 WebSocket 模块
    首发原文链接:Swoole源码分析之WebSocket模块大家好,我是码农先森。Swoole源码分析之WebSocket模块引言WebSocket是一种在单个TCP连接上进行全双工通信的协议。它允许客户端和服务器之间进行实时数据传输。与传统的HTTP请求-响应模型不同,WebSocket可以保持双向通信......
  • Qt/C++监控推流设备推流/延迟极低/实时性极高/rtsp/rtmp推流/hls/flv/webrtc拉流/调整
    一、前言算下来这个推流的项目作品写了有四年多了,最初第一个版本只有文件点播的功能,用的纯QTcpSocket通信实现,属于比较简单的功能。由于文件点播只支持文件形式的推流,不支持网络流或者本地设备采集,所以迫切需要打破这个瓶颈,而后加入核心的网络推流功能,这也是本项目的核心功能,不仅......
  • HTTP相关基础
    HTTP是什么HTTP就是超文本传输协议,也就是HyperTextTransferProtocol。HTTP是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。HTTP知识地图与HTTP相关的协议HTTP报文报文结构拿TCP报文来举例,它在实际要传输的数据之前附......
  • go语言请求http接口示例 并解析json
    本例请求了天气api接口对接流程注册一个账号,对接免费实况天气接口阅读接口文档http://tianqiapi.com/index/doc?version=day请求接口解析json开发流程创建一个json.go文件需要引入的包import( "encoding/json" "fmt" "io/ioutil" "net/http")定义Wea......
  • 如何通过web前端下载付费音乐(以qq音乐为例)
    tips:如今通过这个方式在qq音乐官网只能下载一部分啦!也就是比如试听多久,咱们就能下载多久的音乐时长,试听一分钟就只能下载一分钟!当然你去一个可以全部试听的音乐网站用这方法是可以全部下载的哦!演示PC的操作系统是windows!1.登录qq音乐官网https://y.qq.com/1.1登录自己的qq音......
  • 为什么 HTTP3.0 使用 UDP 协议?
    HTTP2.0和TCP的关系HTTP2.0是2015年推出的,还是比较年轻的,其重要的二进制分帧协议、多路复用、头部压缩、服务端推送等重要优化使HTTP协议真正上了一个新台阶。像谷歌这种重要的公司并没有满足于此,而且想继续提升HTTP的性能,花最少的时间和资源获取极致体验。那肯定要问HTTP2.0......
  • HTTPS 协议
    深入了解HTTPS协议在当今数字化时代,网络安全是至关重要的。随着网络攻击日益增多,保护数据的安全和隐私变得尤为重要。HTTPS(HypertextTransferProtocolSecure)作为一种保护网络通信安全的协议,正日益受到重视。本文将深入探讨HTTPS协议的工作原理、优势以及实施方法。1.......
  • 【Web】记录[长城杯 2022 高校组]b4bycoffee题目复现
    目录前言环境准备简单分析EXP前言本地jar包运行打通了,远程500,感觉靶机环境有问题,不纠结(主要记录下做题过程,纯菜狗,小白文环境准备这次附件给的jar包是可执行jar,不是可依赖jar,不能直接addaslib导入项目需要进行如下的处理先是对jar包进行解压用jadx-gui打开......