解决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 消息生命周期 待消费的消息和待应答的消息有什么区别
目录 消息生命周期 一、消息创建与发布阶段 二、消息路由与存储阶段 三、消息存活与过期阶段 四、消息投递与消费阶段 五、消息生命周期终止 关键配置建议 待消费的消息和待应答的消息 一、待消费的消息(Unconsumed Messages) 二、待应答的消息…...
 
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
一、云漂移优化算法 云漂移优化(Cloud Drift Optimization,CDO)算法是2025年提出的一种受自然现象启发的元启发式算法,它模拟云在大气中漂移的动态行为来解决复杂的优化问题。云在大气中受到各种大气力的影响,其粒子的…...
 
2025年Draw.io最新版本下载安装教程,附详细图文
2025年Draw.io最新版本下载安装教程,附详细图文 大家好,今天给大家介绍一款非常实用的流程图绘制软件——Draw.io。不管你是平时需要设计流程图、绘制思维导图,还是制作架构图,甚至是简单的草图,它都能帮你轻松搞定。…...
记录--洛谷 P1451 求细胞数量
如果想查看完整题目,请前往洛谷 P1451 求细胞数量 P1451 求细胞数量 题目描述 一矩形阵列由数字 0 0 0 到 9 9 9 组成,数字 1 1 1 到 9 9 9 代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形…...
 
Android Studio 配置国内镜像源
Android Studio版本号:2022.1.1 Patch 2 1、配置gradle国内镜像,用腾讯云 镜像源地址:https\://mirrors.cloud.tencent.com/gradle 2、配置Android SDK国内镜像 地址:Index of /AndroidSDK/...
做到哪一步才算精通SQL
做到哪一步才算精通SQL-Structured Query Language 数据定义语言 DDL for StructCREATE:用来创建数据库、表、索引等对象ALTER:用来修改已存在的数据库对象DROP:用来删除整个数据库或者数据库中的表TRUNCATE:用来删除表中所有的行…...
Manus演示案例: 英伟达财务估值建模 解锁投资洞察的深度剖析
在当今瞬息万变的金融投资领域,精准剖析企业价值是投资者决胜市场的关键。英伟达(NVIDIA),作为科技行业的耀眼明星,其在人工智能和半导体领域的卓越表现备受瞩目。Manus 凭借专业的财务估值建模能力,深入挖…...
 
postman接口请求中的 Raw是什么
前言 在现代的网络开发中,API 的使用已经成为数据交换的核心方式之一。然而,在与 API 打交道时,关于如何发送请求体(body)内容类型的问题常常困扰着开发者们,尤其是“raw”和“json”这两个术语之间的区别…...
 
DeepSeek大语言模型下几个常用术语
昨天刷B站看到复旦赵斌老师说的一句话“科幻电影里在人脑中植入芯片或许在当下无法实现,但当下可以借助AI人工智能实现人类第二脑”(大概是这个意思) 💞更多内容,可关注公众号“ 一名程序媛 ”,我们一起从 …...
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、用例编号; 2、测试项目; 3、测试标题; 4、重要级别; 5、预置条件; 6、测试输入; 7、操作步骤; 8、预期输出 二、具体分析通…...
 
c#面试题整理7
1.UDP和TCP的区别 UDP是只要能连上终端就发送,至于终端是否收到,不管。 TCP则是会存在交换,即发送失败或成功,是可知的。 2.进程和线程的区别 双击一个程序的exe文件,程序执行了,这就是一个进程。 这个…...
 
OpenManus-通过源码方式本地运行OpenManus,含踩坑及处理方案,chrome.exe位置修改
前言:最近 Manus 火得一塌糊涂啊,OpenManus 也一夜之间爆火,那么作为程序员应该来尝尝鲜 1、前期准备 FastGithub:如果有科学上网且能正常访问 github 则不需要下载此软件,此软件是提供国内直接访问 githubGit&#…...
 
【性能测试】Jmeter下载安装、环境配置-小白使用手册(1)
本篇文章主要包含Jmeter的下载安装、环境配置 添加线程组、结果树、HTTP请求、请求头设置。JSON提取器的使用,用户自定义变量 目录 一:引入 1:软件介绍 2:工作原理 3:安装Jmeter 4:启动方式 …...
HTML星球大冒险之路线图
第一章:欢迎来到 HTML 星球! 1.1 宇宙的基石:HTML 是什么? 🌍 比喻:HTML 是网页世界的「乐高积木」,用标签搭建一切可见内容🎯 目标:理解 HTML 的作用,掌握…...
 
初识大模型——大语言模型 LLMBook 学习(一)
1. 大模型发展历程 🔹 1. 早期阶段(1950s - 1990s):基于规则和统计的方法 代表技术: 1950s-1960s:规则驱动的语言处理 早期的 NLP 主要依赖 基于规则的系统,如 Noam Chomsky 提出的 生成语法&…...
 
LabVIEW伺服阀高频振动测试
在伺服阀高频振动测试中,闭环控制系统的实时性与稳定性至关重要。针对用户提出的1kHz控制频率需求及Windows平台兼容性问题,本文重点分析NI PCIe-7842R实时扩展卡的功能与局限性,并提供其他替代方案的综合对比,以帮助用户选择适合…...
 
AI编程工具-(七)
250309,10这几天都在用通义灵码搞做建模分析。 感想,指令越具体,实现效果越好。 依然是之前的时许数据,这几天分析效果没有提升。 画的几个有意思的图表和效果 主要觉得这图好看,提示词不复杂。 预测效果 预测准确性提升不大聊…...
 
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
 
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
 
深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
 
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
