当前位置: 首页 > news >正文

解决asp.net mvc发布到iis下安全问题

解决asp.net mvc发布到iis下安全问题

  • 环境信息
    • 1.The web/application server is leaking version information via the "Server" HTTP response
    • 2.确保您的Web服务器、应用程序服务器、负载均衡器等已配置为强制执行Strict-Transport-Security。
    • 3.在HTML提交表单中找不到反CSRF令牌。跨站点请求伪造是一种攻击,涉及迫使受害者在不知情或无意的情况下向目标目标发送HTTP请求,以便作为受害者执行操作。根本原因是应用程序功能以可重复的方式使用可预测的URL/表单操作。攻击的本质是CSRF利用了网站对用户的信任。相比之下,跨站脚本(XSS)利用了用户对网站的信任。与XSS一样,CSRF攻击不一定是跨站点的,但也可能是。跨站点请求伪造也称为CSRF、XSRF、一键攻击、会话骑行、混淆代理和海浪。CSRF攻击在许多情况下都是有效的,包括:*受害者在目标站点上有一个活动会话。*受害者在目标站点上通过HTTP身份验证进行身份验证。*受害者与目标站点位于同一本地网络上。CSRF主要用于使用受害者的权限对目标站点执行操作,但最近发现了通过访问响应来披露信息的技术。当目标站点易受XSS攻击时,信息泄露的风险会急剧增加,因为XSS可以用作CSRF的平台,允许攻击在同源策略的范围内进行。
    • 4.响应包含“仅内容安全策略报告”标头,这可能表示正在进行的实施工作,或在促进预生产到生产过程中的监督等。内容安全策略(CSP)是一个附加的安全层,有助于检测和缓解某些类型的攻击,包括跨站脚本(XSS)和数据注入攻击。这些攻击用于从数据盗窃到网站污损或分发恶意软件。CSP提供了一组标准HTTP标头,允许网站所有者声明允许浏览器在该页面上加载的已批准内容来源--涵盖的类型包括JavaScript、CSS、HTML框架、字体、图像和可嵌入对象
    • 5.The response does not include either Content-Security-Policy with 'frame-ancestors' directive or X-Frame-Options to protect against 'ClickJacking' attacks.
    • 6.反MIME嗅探标头X-Content-Type-Options未设置为“nosniff”。这允许旧版本的Internet Explorer和Chrome对响应正文执行MIME嗅探,从而可能导致响应正文被解释并显示为声明的内容类型以外的内容类型。当前(2014年初)和旧版本的Firefox将使用声明的内容类型(如果设置了),而不是执行MIME嗅探。
    • 7.web/应用程序服务器通过一个或多个“X-Powered-By”HTTP响应标头泄漏信息。访问此类信息可能有助于攻击者识别您的web应用程序所依赖的其他框架/组件,以及这些组件可能存在的漏洞。

环境信息

  • 服务器:Windwos Server 2016
  • 项目框架版本:.NET Framework 4.7.2

1.The web/application server is leaking version information via the “Server” HTTP response

  • 以下静态文件请求都携带了服务器信息

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 为什么请求接口没有,那是因为在Global.asax.cs配置了
protected void Application_PreSendRequestHeaders(object sender, EventArgs e)
{var app = sender as HttpApplication;if (app == null || app.Context == null){return;}// 移除Header中的Serverapp.Context.Response.Headers.Remove("Server");
}
  • 想要解决请求静态文件携带Server信息,可以使用使用 URL Rewrite 模块移除 Server 头,URL Rewrite 模块可以全局处理所有请求(包括静态文件)

1.安装文件下载地址:下载地址
在这里插入图片描述

2.配置web.config

<configuration><system.webServer><rewrite><outboundRules><rule name="Remove Server Header"><match serverVariable="RESPONSE_Server" pattern=".*" /><action type="Rewrite" value="" /></rule></outboundRules></rewrite></system.webServer>
</configuration>

3.效果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.确保您的Web服务器、应用程序服务器、负载均衡器等已配置为强制执行Strict-Transport-Security。

  • iis响应头添加如下配置
Strict-Transport-Security:includeSubDomains

在这里插入图片描述

  • 效果:
    在这里插入图片描述

3.在HTML提交表单中找不到反CSRF令牌。跨站点请求伪造是一种攻击,涉及迫使受害者在不知情或无意的情况下向目标目标发送HTTP请求,以便作为受害者执行操作。根本原因是应用程序功能以可重复的方式使用可预测的URL/表单操作。攻击的本质是CSRF利用了网站对用户的信任。相比之下,跨站脚本(XSS)利用了用户对网站的信任。与XSS一样,CSRF攻击不一定是跨站点的,但也可能是。跨站点请求伪造也称为CSRF、XSRF、一键攻击、会话骑行、混淆代理和海浪。CSRF攻击在许多情况下都是有效的,包括:*受害者在目标站点上有一个活动会话。*受害者在目标站点上通过HTTP身份验证进行身份验证。*受害者与目标站点位于同一本地网络上。CSRF主要用于使用受害者的权限对目标站点执行操作,但最近发现了通过访问响应来披露信息的技术。当目标站点易受XSS攻击时,信息泄露的风险会急剧增加,因为XSS可以用作CSRF的平台,允许攻击在同源策略的范围内进行。

  • 创建令牌
public static class CsrfTokenHelper
{private const string SecretKey = ""; // 服务器端的密钥  public static string CreateCsrfToken(string user){string token = $"{user}"; // 将会话ID和用户值组合起来  byte[] secretKeyBytes = Encoding.UTF8.GetBytes(SecretKey);byte[] tokenBytes = Encoding.UTF8.GetBytes(token);using (HMACSHA256 hmac = new HMACSHA256(secretKeyBytes)){byte[] hashBytes = hmac.ComputeHash(tokenBytes);string csrfToken = Convert.ToBase64String(hashBytes);return csrfToken;}}
}
  • 前端from请求中携带令牌
<input type="hidden" name="CSRFToken">
  • 添加一个验证令牌的过滤器
//解决(CSRF)安全问题,也就是from没有提供票据问题
public class CsrfTokenFilter : ActionFilterAttribute
{public override void OnActionExecuting(ActionExecutingContext context){// 获取crsf_tokenstring xsrf_token_headers = context.HttpContext.Request.Headers["XSRF-TOKEN"] == null ? "" : context.HttpContext.Request.Headers["XSRF-TOKEN"].ToString();string xsrf_token_froms = string.Empty;// 获取表单数据if (context.HttpContext.Request.Form.Count > 0){FormCollection formCollection = new FormCollection(context.HttpContext.Request.Form);xsrf_token_froms = formCollection["CSRFToken"];}string newCsrfToken = CsrfTokenHelper.CreateCsrfToken(CurrentUser.UserAccount);if (xsrf_token_headers != newCsrfToken || xsrf_token_froms != newCsrfToken){// 验证失败,抛出 401 Unauthorized 异常  context.Result = RedirectLogin("/Home/Error");}base.OnActionExecuting(context);}
}
  • 在接口中使用
[WithoutLocalization]
[CsrfTokenFilter]
public JsonResult xxxxx(FormCollection formCol)
{}

4.响应包含“仅内容安全策略报告”标头,这可能表示正在进行的实施工作,或在促进预生产到生产过程中的监督等。内容安全策略(CSP)是一个附加的安全层,有助于检测和缓解某些类型的攻击,包括跨站脚本(XSS)和数据注入攻击。这些攻击用于从数据盗窃到网站污损或分发恶意软件。CSP提供了一组标准HTTP标头,允许网站所有者声明允许浏览器在该页面上加载的已批准内容来源–涵盖的类型包括JavaScript、CSS、HTML框架、字体、图像和可嵌入对象

  • 这个问题太恶心了,要是写了内联样式、行内样式、引入脚本文件了,配置了之后各种问题,解决文档
https://www.w3.org/TR/CSP/
https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
  • web.config配置
<system.webServer><httpProtocol><customHeaders><!--解决Header中没有csp--><add name="Content-Security-Policy" value="default-src 'self';script-src 'self' 'unsafe-inline' 'unsafe-eval'; font-src 'self' 'unsafe-inline' 'unsafe-eval' data: http://localhost:*;img-src 'self' data: blob: http://localhost:*; style-src 'self' 'unsafe-inline';" /><!--允许请求的http 动作--></customHeaders></httpProtocol>
</system.webServer>

5.The response does not include either Content-Security-Policy with ‘frame-ancestors’ directive or X-Frame-Options to protect against ‘ClickJacking’ attacks.

<system.webServer><httpProtocol><customHeaders><add name="X-Frame-Options" value="SAMEORIGIN" /></customHeaders></httpProtocol>
</system.webServer>

6.反MIME嗅探标头X-Content-Type-Options未设置为“nosniff”。这允许旧版本的Internet Explorer和Chrome对响应正文执行MIME嗅探,从而可能导致响应正文被解释并显示为声明的内容类型以外的内容类型。当前(2014年初)和旧版本的Firefox将使用声明的内容类型(如果设置了),而不是执行MIME嗅探。

<system.webServer><httpProtocol><customHeaders><add name="X-Content-Type-Options" value="nosniff"/></customHeaders></httpProtocol>
</system.webServer>

7.web/应用程序服务器通过一个或多个“X-Powered-By”HTTP响应标头泄漏信息。访问此类信息可能有助于攻击者识别您的web应用程序所依赖的其他框架/组件,以及这些组件可能存在的漏洞。

  • 携带服务器信息截图
    在这里插入图片描述
  • 打开iis下的HTTP响应标头,干掉X-Powered-By
    在这里插入图片描述
  • 调整后的效果
    在这里插入图片描述

相关文章:

解决asp.net mvc发布到iis下安全问题

解决asp.net mvc发布到iis下安全问题 环境信息1.The web/application server is leaking version information via the "Server" HTTP response2.确保您的Web服务器、应用程序服务器、负载均衡器等已配置为强制执行Strict-Transport-Security。3.在HTML提交表单中找不…...

概念|RabbitMQ 消息生命周期 待消费的消息和待应答的消息有什么区别

目录 消息生命周期 一、消息创建与发布阶段 二、消息路由与存储阶段 三、消息存活与过期阶段 四、消息投递与消费阶段 五、消息生命周期终止 关键配置建议 待消费的消息和待应答的消息 一、待消费的消息&#xff08;Unconsumed Messages&#xff09; 二、待应答的消息…...

springboot三层架构详细讲解

目录 springBoot三层架构 0.简介1.各层架构 1.1 Controller层1.2 Service层1.3 ServiceImpl1.4 Mapper1.5 Entity1.6 Mapper.xml 2.各层之间的联系 2.1 Controller 与 Service2.2 Service 与 ServiceImpl2.3 Service 与 Mapper2.4 Mapper 与 Mapper.xml2.5 Service 与 Entity2…...

2025最新群智能优化算法:云漂移优化(Cloud Drift Optimization,CDO)算法求解23个经典函数测试集,MATLAB

一、云漂移优化算法 云漂移优化&#xff08;Cloud Drift Optimization&#xff0c;CDO&#xff09;算法是2025年提出的一种受自然现象启发的元启发式算法&#xff0c;它模拟云在大气中漂移的动态行为来解决复杂的优化问题。云在大气中受到各种大气力的影响&#xff0c;其粒子的…...

2025年Draw.io最新版本下载安装教程,附详细图文

2025年Draw.io最新版本下载安装教程&#xff0c;附详细图文 大家好&#xff0c;今天给大家介绍一款非常实用的流程图绘制软件——Draw.io。不管你是平时需要设计流程图、绘制思维导图&#xff0c;还是制作架构图&#xff0c;甚至是简单的草图&#xff0c;它都能帮你轻松搞定。…...

记录--洛谷 P1451 求细胞数量

如果想查看完整题目&#xff0c;请前往洛谷 P1451 求细胞数量 P1451 求细胞数量 题目描述 一矩形阵列由数字 0 0 0 到 9 9 9 组成&#xff0c;数字 1 1 1 到 9 9 9 代表细胞&#xff0c;细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞&#xff0c;求给定矩形…...

Android Studio 配置国内镜像源

Android Studio版本号&#xff1a;2022.1.1 Patch 2 1、配置gradle国内镜像&#xff0c;用腾讯云 镜像源地址&#xff1a;https\://mirrors.cloud.tencent.com/gradle 2、配置Android SDK国内镜像 地址&#xff1a;Index of /AndroidSDK/...

做到哪一步才算精通SQL

做到哪一步才算精通SQL-Structured Query Language 数据定义语言 DDL for StructCREATE&#xff1a;用来创建数据库、表、索引等对象ALTER&#xff1a;用来修改已存在的数据库对象DROP&#xff1a;用来删除整个数据库或者数据库中的表TRUNCATE&#xff1a;用来删除表中所有的行…...

Manus演示案例: 英伟达财务估值建模 解锁投资洞察的深度剖析

在当今瞬息万变的金融投资领域&#xff0c;精准剖析企业价值是投资者决胜市场的关键。英伟达&#xff08;NVIDIA&#xff09;&#xff0c;作为科技行业的耀眼明星&#xff0c;其在人工智能和半导体领域的卓越表现备受瞩目。Manus 凭借专业的财务估值建模能力&#xff0c;深入挖…...

postman接口请求中的 Raw是什么

前言 在现代的网络开发中&#xff0c;API 的使用已经成为数据交换的核心方式之一。然而&#xff0c;在与 API 打交道时&#xff0c;关于如何发送请求体&#xff08;body&#xff09;内容类型的问题常常困扰着开发者们&#xff0c;尤其是“raw”和“json”这两个术语之间的区别…...

DeepSeek大语言模型下几个常用术语

昨天刷B站看到复旦赵斌老师说的一句话“科幻电影里在人脑中植入芯片或许在当下无法实现&#xff0c;但当下可以借助AI人工智能实现人类第二脑”&#xff08;大概是这个意思&#xff09; &#x1f49e;更多内容&#xff0c;可关注公众号“ 一名程序媛 ”&#xff0c;我们一起从 …...

ctf-WEB: 关于 GHCTF Message in a Bottle plus 与 Message in a Bottle 的非官方wp解法

Message in a Bottle from bottle import Bottle, request, template, runapp Bottle()# 存储留言的列表 messages [] def handle_message(message):message_items "".join([f"""<div class"message-card"><div class"me…...

测试用例详解

一、通用测试用例八要素   1、用例编号&#xff1b;    2、测试项目&#xff1b;   3、测试标题&#xff1b; 4、重要级别&#xff1b;    5、预置条件&#xff1b;    6、测试输入&#xff1b;    7、操作步骤&#xff1b;    8、预期输出 二、具体分析通…...

c#面试题整理7

1.UDP和TCP的区别 UDP是只要能连上终端就发送&#xff0c;至于终端是否收到&#xff0c;不管。 TCP则是会存在交换&#xff0c;即发送失败或成功&#xff0c;是可知的。 2.进程和线程的区别 双击一个程序的exe文件&#xff0c;程序执行了&#xff0c;这就是一个进程。 这个…...

OpenManus-通过源码方式本地运行OpenManus,含踩坑及处理方案,chrome.exe位置修改

前言&#xff1a;最近 Manus 火得一塌糊涂啊&#xff0c;OpenManus 也一夜之间爆火&#xff0c;那么作为程序员应该来尝尝鲜 1、前期准备 FastGithub&#xff1a;如果有科学上网且能正常访问 github 则不需要下载此软件&#xff0c;此软件是提供国内直接访问 githubGit&#…...

【性能测试】Jmeter下载安装、环境配置-小白使用手册(1)

本篇文章主要包含Jmeter的下载安装、环境配置 添加线程组、结果树、HTTP请求、请求头设置。JSON提取器的使用&#xff0c;用户自定义变量 目录 一&#xff1a;引入 1&#xff1a;软件介绍 2&#xff1a;工作原理 3&#xff1a;安装Jmeter 4&#xff1a;启动方式 &#xf…...

HTML星球大冒险之路线图

第一章&#xff1a;欢迎来到 HTML 星球&#xff01; 1.1 宇宙的基石&#xff1a;HTML 是什么&#xff1f; &#x1f30d; 比喻&#xff1a;HTML 是网页世界的「乐高积木」&#xff0c;用标签搭建一切可见内容&#x1f3af; 目标&#xff1a;理解 HTML 的作用&#xff0c;掌握…...

初识大模型——大语言模型 LLMBook 学习(一)

1. 大模型发展历程 &#x1f539; 1. 早期阶段&#xff08;1950s - 1990s&#xff09;&#xff1a;基于规则和统计的方法 代表技术&#xff1a; 1950s-1960s&#xff1a;规则驱动的语言处理 早期的 NLP 主要依赖 基于规则的系统&#xff0c;如 Noam Chomsky 提出的 生成语法&…...

LabVIEW伺服阀高频振动测试

在伺服阀高频振动测试中&#xff0c;闭环控制系统的实时性与稳定性至关重要。针对用户提出的1kHz控制频率需求及Windows平台兼容性问题&#xff0c;本文重点分析NI PCIe-7842R实时扩展卡的功能与局限性&#xff0c;并提供其他替代方案的综合对比&#xff0c;以帮助用户选择适合…...

AI编程工具-(七)

250309,10这几天都在用通义灵码搞做建模分析。 感想&#xff0c;指令越具体&#xff0c;实现效果越好。 依然是之前的时许数据&#xff0c;这几天分析效果没有提升。 画的几个有意思的图表和效果 主要觉得这图好看&#xff0c;提示词不复杂。 预测效果 预测准确性提升不大聊…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库&#xff0c;提供了高效、安全的文本格式化功能&#xff0c;是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...

git: early EOF

macOS报错&#xff1a; Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...

Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解

文章目录 一、开启慢查询日志&#xff0c;定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...

WebRTC调研

WebRTC是什么&#xff0c;为什么&#xff0c;如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...