《OWASP代码审计》学习——跨站脚本注入(XSS)

一、跨站脚本概述

1.什么是跨站脚本

跨站点脚本(XSS)是一种编码注入漏洞。它通常出现在 web 应用程序中。XSS 使攻击者能够向其他用户浏览的网页中注入恶意内容。XSS 允许攻击者绕过访问控制,它是 OWASP Top10 最常见的漏洞之一。XSS 是网络服务器上的第二大漏洞。根据易受攻击站点处理的数据的敏感性和站点组织实施的任何安全缓解措施的性质,此漏洞的严重性/风险可能从有害到主要安全风险不同等级

2.类型

有三种类型的 XSS,反射 XSS,存储 XSS,和基于 DOM 的 XSS。每种类型都有不同的方式向服务器传递恶意负载。攻击的效果是一样的。

3.审计内容

跨站点脚本漏洞很难从 web 应用程序中识别和移除。搜索缺陷的最佳实践是执行严格的代码审计,并搜索用户通过 HTTP 输入的内容可能在任何系统 HTML 输出的地方。

(1)不受信任的数据不会像超文本标记语言或 JavaScript 那样在相同的超文本传输协议响 应中传输。 (2)当数据从服务器传输到客户端时,不可信的数据和 HTTP 响应必须被正确编码。不要假 设服务器上的数据是安全的。最佳做法是始终审计数据。 (3)当引入到 DOM 中时,不可信数据必须使用以下应用编程接口之一来引入: a) Node.textContent b) document.createTextNode c) Element.setAttribute(仅第二个参数) 代码审计者也应该知道 HTML 标签(比如< img src…>,< iframe…>,< bgsound src…>等。可以用来传输恶意的 JavaScript。网络应用程序漏洞自动工具/扫描仪可以帮助发现跨站点脚本漏洞。然而,他们无法找到所有的 XSS 漏洞,因此手动代码审计很重要。手动代码审计也不能涵盖所有内容,但是基于您的风险水平,实施深度防御方法始终是最好的方法。OWASP Zed 是一个易于使用的集成渗透测试工具,用于发现网络应用程序中的漏洞。ZAP 提供了自动扫描仪以及一套工具,允许您手动查找安全漏洞。它充当一个网络代理, 108您可以将浏览器指向它,这样它就可以看到流向某个站点的流量,并允许您对应用程序进行爬虫、扫描、模糊和攻击,还有其他开源和商用扫描仪。

二、.NET ASPX框架

关于 ASPX.网页代码审计应该审计以确保 web 配置文件不会关闭页面验证。

< pages validateRequest="false" />

.Net framework 4.0 不允许关闭页面验证。因此,如果程序员想转向页面验证,开发人员需要回归到 2.0 验证模式。

< httpRuntime request validation-Mode = " 2.0 "/> 

代码审计者需要确保页面验证在任何地方都不会被关闭,并且如果它被关闭,就要理解为什么以及它给组织带来的风险。

< % @ Page Language = " c# " validation request = " false ">

三、.NET MVC框架

当 MVC 网络应用程序输入恶意的 XSS 代码时,它们会抛出如下错误:示例.NET XSS 框架错误:为避免此漏洞,请确保包含以下代码:

不幸的是,HtmlEncode 或验证功能不足以处理 XSS,尤其是在用户输入需要添加到JavaScript 代码、标签属性、XML 或 URL 中时。在这种情况下,一个好的选择是反 XSS库。

四、防御方法

1.使用 Microsft’s Anti-XSS 库

防止 XSS 的另一个帮助是使用反 XSS 库。

2.JavaScript 和 JavaScript 框架

如今,Javascript 和 Javascript 框架都广泛应用于 web 应用程序中。这阻碍了代码审计者了解哪些框架在防止 XSS 缺陷方面做得很好,哪些框架做得不好。代码审计人员应该审计一下,看看对于正在使用的框架是否存在任何 CVE,并审计 javascript 框架是否是最 新的稳定版本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/83630.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# OpenCvSharp 去水印 图像修复

效果 项目 VS2022.net4.8OpenCvSharp4 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Security.Cryptography; using System.Text; usi…

【Windows10下启动RocketMQ报错:找不到或无法加载主类 Files\Java\jdk1.8.0_301\lib\dt.jar】解决方法

Windows10下启动RocketMQ报错&#xff1a;找不到或无法加载主类 一、问题产生二、产生原因三、解决办法 一、问题产生 参考RocketMQ Github官网上的说明&#xff0c;下载rocketmq-all-5.1.3-bin-release.zip&#xff0c;解压配置环境变量后&#xff0c;执行如下命令&#xff1a…

【C++11】列表初始化 | decltype操作符 | nullptr | STL的更新

文章目录 一.列表初始化1. 花括号初始化2. initializer_list 二.decltype三.nullptr四.STL的更新1.STL新增容器2.字符串转换函数3.容器中的一些新方法 一.列表初始化 1. 花括号初始化 { }的初始化 C98中&#xff0c;标准允许使用大括号{}对数组或者结构体元素进行统一的列表初…

搭建一个自己的文档网站

目录 简介 快速上手 配置 首页 组件Demo案例 简介 有时候我们可能很好奇&#xff0c;像elementUi或者vue3他们的文档网站是怎么写的&#xff0c;其实写vue文档网站的技术&#xff0c;有两个&#xff1a;一个是vuePress&#xff0c;一个是vitePress。从名字上可以看出来&#…

通过Shinami快速使用赞助交易(Gas代付)

Web3中对钱包和tokens的要求对于新用户来说是最大的挑战。Sui上的赞助交易不仅为用户提供丝滑的体验&#xff0c;还为构建者开辟了更多的收入模式。 按需付费的区块链模型直接支持网络基础设施&#xff0c;但对于那些已经习惯了Web2世界中看似免费服务的用户来说&#xff0c;这…

【计算机视觉】干货分享:Segmentation model PyTorch(快速搭建图像分割网络)

一、前言 如何快速搭建图像分割网络&#xff1f; 要手写把backbone &#xff0c;手写decoder 吗&#xff1f; 介绍一个分割神器&#xff0c;分分钟搭建一个分割网络。 仓库的地址&#xff1a; https://github.com/qubvel/segmentation_models.pytorch该库的主要特点是&#…

UEditorPlus v3.3.0 图片上传压缩重构,UI优化,升级基础组件

UEditor是由百度开发的所见即所得的开源富文本编辑器&#xff0c;基于MIT开源协议&#xff0c;该富文本编辑器帮助不少网站开发者解决富文本编辑器的难点。 UEditorPlus 是有 ModStart 团队基于 UEditor 二次开发的富文本编辑器&#xff0c;主要做了样式的定制&#xff0c;更符…

了解IL汇编异常处理语法

从网上拷过来一个IL汇编程序&#xff0c;编译时先报如下错&#xff0c; 看它是把空格识别为了下注红线的字符&#xff0c;这是字符编码的问题&#xff0c;用记事本替换功能替换了&#xff1b; 然后又报如下的错&#xff0c; 看不出来问题&#xff0c;拷一句正确的来&#xff0…

周末在家值班,解决几个月前遗忘的Bug

问题&#xff1a; 周末被迫在家值班&#xff0c;无聊之际打开尘封已久的Bug清单&#xff0c;发现有Bug拖了几个月还没解决… 场景是这样子的&#xff0c;有个功能是拿Redis缓存热点数据进行展示&#xff0c;暂且称它为功能A&#xff0c;有个另外的功能B&#xff0c;它会去更新缓…

机器学习笔记:李宏毅ChatGPT课程1:刨析ChatGPT

ChatGPT——Chat Generative Pre-trained Transformer 1 文字接龙 每次输出一个概率分布&#xff0c;根据概率sample一个答案 ——>因为是根据概率采样&#xff0c;所以ChatGPT每次的答案是不一样的&#xff08;把生成式学习拆分成多个分类问题&#xff09;将生成的答案加到…

Spring MVC项目概述及创建

Spring MVC项目概述及创建 1.什么是Spring MVC Spring MVC是基于SevletAPI的原始Web框架。Spring MVC项目也叫做SpringWeb项目。 它是在springboot项目中引入了web框架&#xff0c;原本的spring项目不具备网络通信能力&#xff0c;而spring mvc允许http响应&#xff0c;当用…

uni-app:实现点击按钮,进行数据累加展示(解决数据过多,导致出错)

效果 代码 核心代码 一、标签显示 <!-- 加载更多 --> <view class"load_more" v-if"info.length > pageNum * pageSize" tap"loadMore">加载更多 </view> v-if"info.length > pageNum * pageSize"&#xf…

企业邮箱安全对比:哪家公司的产品更可靠?

邮箱仍然是企业沟通的关键组成部分&#xff0c;但往往容易受到安全威胁。为了保护敏感信息&#xff0c;企业需要采取措施使企业邮箱更加安全。这可以通过投资先进的安全解决方案&#xff0c;创建限制或控制访问的策略&#xff0c;并定期对员工进行最佳实践培训来实现。 1、投资…

vue3 + ts+element-plus学习笔记

子组件通过defineProps方法接收父组件传递过来的数据&#xff0c;是vue3中提供的方法&#xff0c;不需要引入&#xff0c;直接使用 方法的写法&#xff1a; const onClick (){... }自定义事件&#xff1a; 子组件点击事件 全局事件总线 mitt 兄弟组件之间的事件&#x…

网络加速与文件传输软件:如何通过优化网络提升文件传输速度

在信息化社会&#xff0c;文件传输是人们生活和工作中必不可少的一个环节。但是&#xff0c;由于网络环境的多样性和传输过程中可能出现的各种问题&#xff0c;文件传输速度经常受到影响。因此&#xff0c;如何优化网络以提高文件传输速度成为了一个重要的课题。本文将探讨网络…

阻塞队列

阻塞队列 阻塞队列&#xff0c;字面意思就是带有阻塞功能&#xff0c;也就是这个线程不走了&#xff0c;不再参与cpu的调度&#xff0c;等到合适的时机条件成功时候再继续参与cpu的调度 主要体现在以下两方面 1.当队列满的时候&#xff0c;继续入队列&#xff0c;就会出现阻塞…

C++学习| MFC简单入门

前言&#xff1a;因为接手了CMFC的程序&#xff0c;所以需要对MFC编程方面有所了解。 C之MFC简单入门 MFC相关的概念MFCWIN32QT MFC项目基本操作MFC项目创建MFC项目文件解读界面和代码数据交互——加法器 MFC相关的概念 MFC MFC&#xff08;Microsoft Foundation Classes微软…

Springboot中创建拦截器

目录 目的 实现过程 1、创建拦截器 2、注册拦截器 完整代码 目的 在Springboot项目中创建拦截器&#xff0c;在进入Controller层之前拦截请求&#xff0c;可对拦截到的请求内容做响应处理&#xff0c;如&#xff1a;校验请求参数、验证证书等操作&#xff1b; 实现过程 1、创…

藏语翻译器:藏语翻译小助手

这是一款翻译功能齐全的翻译软件&#xff0c;主打藏语翻译功能&#xff0c;同时具备文字翻译、图片翻译、音频翻译、视频翻译、文档翻译等热门功能&#xff0c;支持将翻译结果导出为可编辑的文本文档&#xff0c;方便后续编辑整理。支持朗读原文和译文&#xff0c;帮助我们学习…

【树】 二叉树 堆与堆排序 平衡(AVL)树 红黑(RB)树

目录 1 树1.1 认识树1.2 树的相关概念1.3 树的表示孩子兄弟表示法 2 二叉树2.1 概念2. 2 特殊二叉树2.3 二叉树的性质2.4 二叉树的存储结构 3 堆 — 完全二叉树的顺序结构实现3.1 堆的概念3.2 核心代码3.3 堆应用1 堆排序2 TOP-K问题 4 二叉树的链式存储4.1 二叉链结构与初始化…