不改代码,实现web.config或app.config的连接字符串加密解密

目的:加密字符串,防止明文显示。

好处:不用修改代码,微软自带功能,自动解密。

web.config 参考相关文章:

Walkthrough: Encrypting Configuration Information Using Protected Configuration | Microsoft Learn

https://community.discountasp.net/threads/cannot-decrypt-connectionstrings-in-web-config.21250/

app.config 参考相关文章:

Encrypt and Decrypt Connection String in AppConfig file

#web.config文件的数据库连接字符串加密


假设网站是在IIS目录下

  • step 1 :找到Aspnet_regiis.exe

The Aspnet_regiis.exe tool is located in the %windows%\Microsoft.NET\Framework\versionNumber folder.

如下:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319>

创建identity.aspx放在网站要目录下面,运行这个页面后得到IIS网站运行的账号,后面需要对它进行授权,页面内容如下:

<%@ Page Language="VB" %>
<%
Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name)
%>
  • step2:创建 RSA 密钥容器

例如,以下命令创建一个名为 NetFrameworkConfigurationKey_components1 的 RSA 密钥容器,该容器是机器级密钥容器并且可以导出。
 

aspnet_regiis -pc "NetFrameworkConfigurationKey_components1" -exp
  • step2:导出 ,如果不用导出的话,这步可忽略
aspnet_regiis.exe -px "NetFrameworkConfigurationKey_components1" "D:\temp\NetFrameworkConfigurationKey_components1.xml"

  • step3:更新web.config文件,添加节点,节点不要放在第一个节点下面,否则 会报错,建议放在connectionString节点前面就好。

 

<configProtectedData defaultProvider="MyRsaProtectedConfigurationProvider">
        <providers>
            <add name="MyRsaProtectedConfigurationProvider" type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
   keyContainerName="NetFrameworkConfigurationKey_components1"
   useMachineContainer="true" />
        </providers>
    </configProtectedData>

  • step4:生成加密字符串 网站目录为:D:\APP\website下的web.config,节点为connectionString,这步执行后web.config中的连接字符串会加密
aspnet_regiis -pef connectionStrings D:\APP\HUB

web.config部分截图如下,生成好的加密字符串

  • step5:给账号对容器进行授予访问 RSA 密钥容器的权限hub_dev是获取的IIS的运行账号
aspnet_regiis -pa NetFrameworkConfigurationKey_components1 username
  • step6: 如果需要查看加密后的解密内容,可以如下:

在IIS下创建walkthrough.aspx,内容如下,运行后可见解密内容。

<%@ Page Language="VB" %>
<%@ Import Namespace="System.Configuration" %>
<%@ Import Namespace="System.Web.Configuration" %>
<script runat="server">

Public Sub Page_Load()

  ConnectionStringsGrid.DataSource = ConfigurationManager.ConnectionStrings
  ConnectionStringsGrid.DataBind()

  Dim config As System.Configuration.Configuration = _
    WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath)
  Dim key As MachineKeySection = _
    CType(config.GetSection("system.web/machineKey"), MachineKeySection)
  DecryptionKey.Text = key.DecryptionKey
  ValidationKey.Text = key.ValidationKey

End Sub

</script>
<html>

<body>

<form runat="server">

  <asp:GridView runat="server" CellPadding="4" id="ConnectionStringsGrid" />
  <P>
  MachineKey.DecryptionKey = <asp:Label runat="Server" id="DecryptionKey" /><BR>
  MachineKey.ValidationKey = <asp:Label runat="Server" id="ValidationKey" />

</form>

</body>
</html>

#app.config 连接字符串加密

操作步骤同web.config,先将app.config重命名为web.config才能被识别,加密完成后再改回app.config.

step 1 :找到Aspnet_regiis.exe

同上

step2:创建 RSA 密钥容器

同上

step3:更新web.config(由app.config改名而来)文件

同上

step4:生成加密字符串,这里是app目录

同上

step5:改回app.config(由web.config改回)文件

以上就完成,代码部分不用修改。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SQL执行慢排查以及优化思路

数据库服务器的优化步骤 当我们遇到数据库调优问题的时候&#xff0c;该如何思考呢&#xff1f;我把思考的流程整理成了下面这张图。 整个流程划分成了观察&#xff08;Show status&#xff09;和行动&#xff08;Action&#xff09;两个部分。字母 S 的部分代表观察&#xf…

小红书运营教程02

小红书大致会分享10篇左右。微博、抖音、以及视频剪辑等自媒体运营相关技能以及运营教程相关会陆续的进行分享。 上次分享涉及到的对比,母婴系列,或者可以说是服装类型,不需要自己过多的投入,对比知识类博主来说,自己将知识讲述出来,然后要以此账号进行变现就比较麻烦,…

SARscape——GAMMA滤波

目录 一、算法原理1、概述2、参考文献 二、软件操作三、结果展示1、原始图像2、滤波结果 一、算法原理 1、概述 GAMMA滤波器假定数据服从GAMMA 分布&#xff0c;被滤波器滤除的像元将被基于局部统计计算出的方差系数所代替。其数学模型为: F i j { M , C x < C u B M P 2…

gin框架 gin.Context中的Abort方法使用注意事项 - gin框架中立刻中断当前请求的方法

gin框架上下文中的Abort序列方法&#xff08;Abort&#xff0c;AbortWithStatus&#xff0c; AbortWithStatusJSON&#xff0c;AbortWithError&#xff09;他们都不会立刻终止当前的请求&#xff0c;在中间件中调用Abort方法后中间件中的后续的代码会被继续执行&#xff0c;但是…

电子价签能够给零售业带来哪些效益?

在竞争激烈的零售市场中&#xff0c;每一个细微的优化都可能成为吸引顾客和提升效率的关键。随着技术的不断进步&#xff0c;电子价签作为一种革新性的解决方案&#xff0c;正以其独特的优势重新定义零售运营的标准。那它到底能给我们的零售门店带来哪些实际效益&#xff1f; …

Qt时间日期处理与定时器使用总结

一、日期时间数据 1.QTime 用于存储和操作时间数据的类&#xff0c;其中包括小时(h)、分钟(m)、秒(s)、毫秒(ms)。函数定义如下&#xff1a; //注&#xff1a;秒(s)和毫秒(ms)有默认值0 QTime::QTime(int h, int m, int s 0, int ms 0) 若无须初始化时间数据&#xff0c;可…

基于FPGA的DDS信号发生器

前言 此处仅为基于Vivado实现DDS信号发生器的仿真实现&#xff0c;Vivado的安装请看下面的文章&#xff0c;这里我只是安装了一个标准版本&#xff0c;只要能够仿真波形即可。 FPGA开发Vivado安装教程_vivado安装 csdn-CSDN博客 DDS原理 DDS技术是一种通过数字计算生成波形…

Linux shell编程学习笔记61: pstree 命令——显示进程树

0 前言 在 Linux shell编程学习笔记59&#xff1a; ps 获取系统进程信息&#xff0c;类似于Windows系统中的tasklist 命令https://blog.csdn.net/Purpleendurer/article/details/139696466?spm1001.2014.3001.5501 中我们研究了ps命令。在Linux中&#xff0c;通过ps命令&am…

Perl语言入门指南

一、绪论 1.1 Perl语言概述 1.2 Perl的特色 1.3 Perl面临的问题 1.4 Perl语言的应用领域 二、Perl语言基础 2.1 Perl语言的历史发展 2.2 Perl语言的基本语法 2.3 Perl语言的数据类型 三、Perl语言控制结构 3.1 条件语句 3.2 循环结构 3.3 函数和子程序 四、Perl语…

RK3568驱动指南|第十五篇 I2C-第183章 SMBus总线介绍

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

电脑版微信自动发送微信消息给好友或者群聊

一.软件下载 点击微信自动发送消息下载 二.相关使用方法 1.打开软件&#xff0c;输入想自动发送的内容 2.确保登录了微信电脑版【PC端】&#xff0c;然后切换到想要自动发送的好友或群聊的窗口。 3.点击开始&#xff0c;现在自动发送即可&#xff0c;稍等三秒程序自动运行。 …

小程序开发平台版源码系统——万能门店小程序功能 前后端分离 带完整的安装代码包以及搭建教程

系统概述 在移动互联网的浪潮中&#xff0c;小程序以其轻量、便捷、无需下载即可使用的特点&#xff0c;迅速成为连接用户与商家的新桥梁。为了满足广大商家快速搭建个性化、高效运营的小程序需求&#xff0c;我们精心打造了“小程序开发平台版源码系统——万能门店小程序功能…

秋招——MySQL补充——MySQL是如何加行级锁

文章目录 引言正文什么SQL语句会加行级锁查询操作增加对应的行级锁事务的写法 update和delete修改操作也会增加行级锁 行级锁有哪些种类记录锁间隙锁Next-Key锁 MySQL是如何加行级锁&#xff1f;唯一索引等值查询查询记录是存在的查询记录是不存在的 唯一索引范围查找针对大于或…

【python脚本】批量检测sql延时注入

文章目录 前言批量检测sql延时注入工作原理脚本演示 前言 SQL延时注入是一种在Web应用程序中利用SQL注入漏洞的技术&#xff0c;当传统的基于错误信息或数据回显的注入方法不可行时&#xff0c;例如当Web应用进行了安全配置&#xff0c;不显示任何错误信息或敏感数据时&#x…

Element中的消息提示组件Message和弹框组件MessageBox

简述&#xff1a;在 Element UI 中&#xff0c;Message和MessageBox都是比较常用的组件&#xff0c;Message用来提示消息&#xff0c;而MessageBox是一个用于创建模态对话框的组件。它可以用于在页面上快速展示信息、警告或错误提示&#xff0c;而不会阻止用户的其他操作。简单…

Pandas_DataFrame读写详解:案例解析(第24天)

系列文章目录 一、 读写文件数据 二、df查询数据操作 三、df增加列操作 四、df删除行列操作 五、df数据去重操作 六、df数据修改操作 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、 读写文…

华为DCN之:SDN和NFV

1. SDN概述 1.1 SDN的起源 SDN&#xff08;Software Defined Network&#xff09;即软件定义网络。是由斯坦福大学Clean Slate研究组提出的一种新型网络创新架构。其核心理念通过将网络设备控制平面与数据平面分离&#xff0c;从而实现了网络控制平面的集中控制&#xff0c;为…

深入理解C++中的锁

目录 1.基本互斥锁&#xff08;std::mutex&#xff09; 2.递归互斥锁&#xff08;std::recursive_mutex&#xff09; 3.带超时机制的互斥锁&#xff08;std::timed_mutex&#xff09; 4.带超时机制的递归互斥锁&#xff08;std::recursive_timed_mutex&#xff09; 5.共享…

图解 Kafka 架构

写在前面 Kafka 是一个可横向扩展&#xff0c;高可靠的实时消息中间件&#xff0c;常用于服务解耦、流量削峰。 好像是 LinkedIn 团队开发的&#xff0c;后面捐赠给apache基金会了。 kafka 总体架构图 Producer&#xff1a;生产者&#xff0c;消息的产生者&#xff0c;是消息的…

android AIDL使用demo

背景 最近打算学习一下如何在framework层添加一个自定义service。 了解到自定义service需要使用aidl&#xff0c;为了加强对aidl的了解和使用过程&#xff0c;特意又温习了一下aidl的使用&#xff0c;并用博客的形式记录下来。 aidl官方参考&#xff1a;https://developer.and…