当前位置: 首页 > 编程日记 > 正文

如何使用 ASP.NET 实用工具加密凭据和会话状态连接字符串

文章编号:329290
最后修改:2006年4月10日
修订:8.0
重要说明:本文包含有关如何修改注册表的信息。修改注册表之前,一定要先进行备份,并且一定要知道在发生问题时如何还原注册表。有关如何备份、还原和修改注册表的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986 (http://support.microsoft.com/kb/256986/) Microsoft Windows 注册表说明
本页
概要概要
简介简介
重新启动 IIS重新启动 IIS
更多信息更多信息
下载和运行 Aspnet_setreg.exe下载和运行 Aspnet_setreg.exe
在配置文件中使用加密的属性在配置文件中使用加密的属性
使用 Regedt32.exe 在这些注册表项中为 ASP.NET 帐户授予权限使用 Regedt32.exe 在这些注册表项中为 ASP.NET 帐户授予权限
参考参考

概要

本文分步介绍如何使用 Aspnet_setreg.exe 实用工具加密凭据和会话状态连接字符串。如果您想完成下列任一操作,Microsoft ASP.NET 版本 1.0 都会要求您将纯文本凭据存储在配置文件中:
更改 ASP.NET 工作进程标识。
指定一个模拟标识。
指定一个用于会话状态的连接字符串。
当您应用 Microsoft 知识库文章 329250(见“参考”)中介绍的修补程序时,您可以使用存储在注册表中的加密数据而不是使用下列配置节中的纯文本内容:
<identity userName= password= />
<processModel userName= password= />
<sessionState stateConnectionString= sqlConnectionString= />
回到顶端回到顶端

简介

使用 Aspnet_setreg.exe 实用工具将这些属性值加密并存储到注册表中一个安全的项下。使用带 CRYPTPROTECT_LOCAL_MACHINE 标志的 CryptProtectData 函数加密凭据。由于任何人只要具有访问此计算机的权限就可以调用 CryptUnprotectData,因此,加密的数据被存储在一个安全的、具有严格自由访问控制列表 (DACL) 的注册表项下面。当 ASP.NET 分析配置文件时,它将读取此安全的注册表项,然后使用 CryptUnprotectData 来解密数据。

在 System 标识下运行的 Inetinfo.exe 读取 <processModel /> 部分。要读取存储 ASP.NET 辅助进程用户名和密码的注册表项,System 帐户必须具有对这些项的“读取”权限。

ASP.NET 辅助进程 (Aspnet_wp.exe) 读取 <identity /> 和 <sessionState /> 部分。要读取这些注册表项,辅助进程帐户必须具有对这些项的“读取”权限。如果内容存放在“通用命名约定”(UNC) 共享上,则用于访问 UNC 共享的帐户必须具有对这些项的读取权限。

默认情况下,Aspnet_setreg.exe 创建的注册表项向 System、Administrator 和 Creator Owner 帐户授予完全控制权。您可以使用 Regedt32.exe 修改注册表项上的 DACL。应确保任意用户不能读取注册表项。

重新启动 IIS

要使您所做的更改生效,必须重新启动 Microsoft Internet 信息服务 (IIS)。重新启动 IIS 时,会启动一个新的 ASP.NET 工作进程。要重新启动 IIS,请单击“开始”,单击“运行”,在“打开”框中键入 iisreset,然后单击“确定”。

注意:如果重新配置的服务器是域控制器,则可能必须重新启动该服务器。
回到顶端回到顶端

更多信息

下载和运行 Aspnet_setreg.exe

可以从 Microsoft 下载中心下载以下文件:

下载立即下载 Aspnet_setreq.exe 程序包。 (http://download.microsoft.com/download/2/9/8/29829651-e0f0-412e-92d0-e79da46fd7a5/aspnet_setreg.exe)
发布日期:2003 年 4 月 11 日

有关如何下载 Microsoft 支持文件的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
119591 (http://support.microsoft.com/kb/119591/) 如何从联机服务获取 Microsoft 支持文件
Microsoft 已对此文件进行了病毒扫描。Microsoft 使用的是该文件发布时可以获得的最新病毒检测软件。该文件存储在安全性得到增强的服务器上,以防止在未经授权的情况下对其进行更改。 

要显示所有可用的命令行参数及其用法,请在命令提示符下不使用任何命令行参数运行此工具。如果已将此工具保存在 C:/Tools/ 中,请从命令提示符处运行以下命令,以显示该工具的所有可用开关及有关这些开关的帮助:
C:/Tools>aspnet_setreg.exe
回到顶端回到顶端

在配置文件中使用加密的属性

警告:如果使用注册表编辑器或其他方法错误地修改了注册表,则可能导致严重问题。这些问题可能需要重新安装操作系统才能解决。Microsoft 不能保证您可以解决这些问题。修改注册表需要您自担风险。

注意:该工具在 HKEY_LOCAL_MACHINE 子树下创建注册表项。默认情况下,只有管理员才能在此子树下创建项。确保您以管理员的身份登录,以便成功创建这些注册表项。
1.加密将与 <identity> 部分一起使用的 userName 和 password 属性。(您也可以将此操作过程用于本文中提及的其他部分。)为此,请在命令行上键入以下命令:
c:/Tools>aspnet_setreg.exe -k:SOFTWARE/MY_SECURE_APP/identity -u:"yourdomainname/username" -p:"password"
该命令加密 userName 和 password 属性,并在指定的任何位置创建注册表项,然后将这些属性存储在那些注册表项中。此命令还可以生成输出内容,此内容指定如何更改您的 Web.config 或 Machine.config 文件,以便 ASP.NET 使用这些项从注册表中读取信息。

执行此命令之后,您将收到类似于下面的输出内容:
请编辑您的配置文件以包含以下内容:

userName="registry:HKLM/SOFTWARE/MY_SECURE_APP/identity/ASPNET_SETREG,userName"
password="registry:HKLM/SOFTWARE/MY_SECURE_APP/identity/ASPNET_SETREG,password"

注册表项的 DACL 向 System、Administrators 和 Creator Owner 授予完全控制权限。

如果已经为 <identity/> 配置节加密了凭据,或者为 
<sessionState/> 配置节加密了连接字符串,则确保该进程标识具有
对注册表项的“读取”权限。而且,如果您已经相应地配置 IIS 来访问存储在
UNC 共享上的内容,那么访问此共享的用户帐户需要具有对注册表项的“读取”权限。
Regedt32.exe 可以用来查看或修改注册表项权限。

您可以重命名注册表子项和注册表值来避免被发现。
2.请修改相应的配置文件使之指向这些注册表项。如果必须在 <identity> 节中使用这些值,则得到的 <identity> 节将类似如下内容。
<identity impersonate="true"
userName="registry:HKLM/SOFTWARE/MY_SECURE_APP/identity/ASPNET_SETREG,userName"
password="registry:HKLM/SOFTWARE/MY_SECURE_APP/identity/ASPNET_SETREG,password" />
3.向 Aspnet_wp.exe 进程帐户授予“读取”权限。有关如何更改注册表项权限的更多信息,请参见“使用 Regedt32.exe 在这些注册表项中为 ASP.NET 帐户授予权限”一节。
回到顶端回到顶端

使用 Regedt32.exe 在这些注册表项中为 ASP.NET 帐户授予权限

警告:如果使用注册表编辑器或其他方法错误地修改了注册表,则可能导致严重问题。这些问题可能需要重新安装操作系统才能解决。Microsoft 不能保证您可以解决这些问题。修改注册表需要您自担风险。
1.单击“开始”,单击“运行”,在“打开”框中键入 regedt32,然后单击“确定”。
2.单击 HKEY_LOCAL_MACHINE/SOFTWARE/MY_SECURE_APP/ 子项。
3.在“安全性”菜单上,单击“权限”,以打开“权限”对话框。

在 Microsoft Windows XP 或 Windows Server 2003 上,右键单击该注册表项,然后单击“权限”。
4.单击“添加”。在打开的对话框中,键入 yourservername/ASPNET(如果使用 Windows Server 2003 (IIS 6.0),则键入 yourservername/NetWork Service),然后单击“确定”。
5.确保刚才添加的帐户具有“读取”权限,然后单击“确定”。
6.关闭注册表编辑器。
回到顶端回到顶端

参考

有关允许您使用本文所述功能的修补程序的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
329250 (http://support.microsoft.com/kb/329250/) FIX:用于 processModel、标识和 sessionState 的更强凭据
有关 Microsoft Windows 注册表的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986 (http://support.microsoft.com/kb/256986/) Microsoft Windows 注册表说明
有关 ASP.NET 的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
315158 (http://support.microsoft.com/kb/315158/) FIX:ASP.NET 在域控制器上使用默认 ASPNET 帐户不能正常运行
317012 (http://support.microsoft.com/kb/317012/) ASP.NET 中的进程和请求标识

相关文章:

16款小米新品,刚刚雷军只发了5款

会前&#xff0c;雷军在微博上提前疯狂剧透小米即将发布的新品信息。要发布的产品实在太多了&#xff0c;整合提前发布的信息来看&#xff0c;此次发布会可能会是小米有史以来时间跨度最长、新品数量最多的新品发布会&#xff0c;包括小米11 Pro/Ultra、小米MIX新机、小米11青春…

windows下使用aspell开启emacs的单词拼写检查功能

第一步,你需要下载aspell安装文件和至少一个字典,下载地址为http://aspell.net/win32/. 下载之后,分别安装aspell和字典. 需要注意的是,在64位的WIN7下,“C:\Program Files (x86)”是32位安装程序的默认安装目录,而“C:\Program Files"是64位安装程序的默认安装目录,因此a…

老板来了:人脸识别 + 手机推送,老板来了你立刻知道!

背景介绍 学生时代&#xff0c;老师站在窗外的阴影挥之不去。大家在玩手机&#xff0c;看漫画&#xff0c;看小说的时候&#xff0c;总是会找同桌帮忙看着班主任有没有来。 一转眼&#xff0c;曾经的翩翩少年毕业了&#xff0c;新的烦恼来了&#xff0c;在你刷知乎&#xff0c;…

在C#中使用COM+实现事务控制

.NET技术是微软大力推广的下一代平台技术&#xff0c;自从.NET技术架构的正式发布&#xff0c;此项技术也逐渐走向成熟和稳定。按照微软的平台系统占有率&#xff0c;我们不难想象得到&#xff0c;在未来的一两年内.NET技术必定会势如破竹一般的登上主流的技术平台&#xff0c;…

深入理解 JavaScript 中的 replace 方法

2019独角兽企业重金招聘Python工程师标准>>> 字符串替换字符串 1 I am loser! .replace( loser , hero ) //I am hero! 直接使用字符串能让自己从loser变成hero&#xff0c;但是如果有2个loser就不能一起变成hero了。 1 I am loser,You are loser .replace( loser ,…

透过计算机视觉,看看苏伊士运河堵船

作者 | Edison_G来源 | 计算机视觉研究院头图 | 下载于视觉中国3月29日&#xff0c;长赐号终于重新上浮。船运代理公司Inchcape和苏伊士运河管理局皆证实&#xff0c;长赐号已经重新漂浮在水面上&#xff0c;但目前还不清楚需要多少时间重启运河。这张图片&#xff0c;相信大家…

泼点冷水,P2P借款限额是不是想的太美好?

8月24日等待了大半年的P2P网贷监管规则《网络借贷信息中介机构业务活动管理暂行办法&#xff08;评估稿&#xff09;》终于出现。办法中最引人注意的是对借款上限的规定&#xff1a; 同一自然人在同一网络借贷信息中介机构平台的借款余额上限不超过人民币20万元&#xff0c;在不…

SQL语句优化技术分析

SQL语句优化技术分析 操作符优化 IN 操作符 用IN写出来的SQL的优点是比较容易写及清晰易懂&#xff0c;这比较适合现代软件开发的风格。 但是用IN的SQL性能总是比较低的&#xff0c;从ORACLE执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别&#xff1a; ORACLE试图将…

官方抓虫,PyTorch 新版本修复 13 项 Bug

整理 | 寇雪芹头图 | 下载于视觉中国出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;近日&#xff0c;PyTorch 发布了新版本 PyTorch 1.8.1&#xff0c;相比3月4日从 PyTorch 1.7 到 1.8 的重要更新&#xff08; 1.8 版本主要包括编译器和分布式训练更新&…

开发webpart时建立图像文件夹和CSS,js文件夹

如图所示&#xff1a;是通过添加映射来完成&#xff0c;做好之后&#xff0c;把图像拷到文件夹时&#xff0c;当ascx文件里需要用到图像时&#xff0c;直接把图像拖到ascx文件里的位置。这样就知道该图像的路径 了。转载于:https://www.cnblogs.com/oymx/p/3490175.html

AI金融若不解决这些问题,等于在制造新的不可解问题

人们对新事物总是充满恐惧。就在大家担心无人驾驶汽车是否弊大于利的时候&#xff0c;AI重塑金融规律的创新也引起许多人对其中的法律和道德问题的顾虑。 让一个软件程序来决定&#xff0c;谁拥有投资开户的资格&#xff0c;谁能够获得贷款&#xff08;征信&#xff09;&#x…

Java 领域 offer 收割:程序员黄金 5 年进阶心得!

怎样才能拿到大厂的offer&#xff1f;没有掌握绝对的技术&#xff0c;那么就要不断的学习。如何拿下阿里等大厂的offer的呢&#xff0c;今天分享一个秘密武器&#xff0c;资深架构师整理的Java核心知识点&#xff0c;面试时面试官必问的知识点&#xff0c;篇章包括了很多知识点…

TCP连接的状态转换图深度剖析

在TCP/IP协议中&#xff0c;TCP协议提供可靠的连接服务&#xff0c;采用三次握手建立一个连接&#xff0c;如图1所示。&#xff08;1&#xff09;第一次握手&#xff1a;建立连接时&#xff0c;客户端A发送SYN包&#xff08;SYNj&#xff09;到服务器B&#xff0c;并进入SYN_SE…

ASP.Net中的TreeView控件中对节点的上移和下移操作

Web中的TreeView中的没有PreNode和NextNode属性。 但它的集合属性中有一个IndexOf属性&#xff0c;从而能够找到它的前一个节点知后一个节点。 TreeView中要么只有一个根节点&#xff1b;要么没有根节点&#xff0c;都是并列排的&#xff0c;这个要判断。 这里主要是用了递归&a…

大数据流通存隐忧 产业信任体系亟待建立

就在今年10月&#xff0c;始于美国东部的“DDoS攻击”席卷了整个美国&#xff0c;引起了人们对数据安全的恐慌&#xff0c;大数据安全问题逐渐暴露。在第三届世界互联网大会的大数据分论坛上&#xff0c;中国科学院秘书长邓麦村在致辞中指出&#xff0c;如何突破大数据关键技术…

ImageNet十年,AI数据标注如何蓬勃发展?

2016 年&#xff0c;AlphaGo 战胜李世石&#xff0c;成为新一代 AI 浪潮的重要里程碑事件。 经此一役&#xff0c;很多人都认识到了算法和算力对 AI 发展的重要性&#xff0c;确忽略了另一个重要因素&#xff1a;数据。 2009 年&#xff0c;时任斯坦福大学任助理教授的李飞飞…

关于webservice的异步调用简单实例

于webservice的异步调用简单实例无论在任何情况下&#xff0c;被调用方的代码无论是被异步调用还是同步调用的情况下&#xff0c;被调用方的代码都是一样的&#xff0c; 下面&#xff0c;我们就以异步调用一个webservice 为例作说明。这是一个webservice <WebMethod(Descrip…

理解NSAttributedString

An NSAttributedString object manages character strings and associated sets of attributes (for example, font and kerning) that apply to individual characters or ranges of characters in the string. 这句话就是对这个类的一个最简明扼要的概括。NSAttributedString…

Redis集群两种配置方式

2019独角兽企业重金招聘Python工程师标准>>> 第一种使用&#xff1a;JedisCluster <bean id"jedisPoolConfig" class"redis.clients.jedis.JedisPoolConfig"><property name"maxTotal" value"30" /><proper…

调用API弹出打印机属性对话框

调用api弹出打印机属性对话框 Author:vitoriatangFrom:Internet.NET Framework封装了很多关于打印的对话框&#xff0c;比如说PrintDialog, PageSetupDialog. 但是有的时候我们还需要关心打印机属性对话框&#xff0c;那么就可以调用API来解决这个问题。有几个API函数与之相关P…

Oracle DBA学习互联网化的内容

搞了多年的Oracle数据库维护&#xff0c;近几年来&#xff0c;个人感觉基本都在舒适区&#xff0c;技术上没啥进步。而且由于个人资料或者学习方法的限制&#xff0c;Oracle数据库技术上再想精进感觉事倍功半。2013年开始&#xff0c;去IOE的声势搞得轰轰烈烈&#xff0c;mysql…

离不开深度学习的自动驾驶

作者 | 小白来源 | 小白学视觉头图 | 下载于视觉中国深度学习在整个自动驾驶技术的各个部分中进行了应用&#xff0c;例如在感知&#xff0c;预测和计划中都有应用。同时&#xff0c;深度学习也可以用于制图&#xff0c;这是高级自动驾驶的关键组成部分。拥有准确的地图对于自动…

IOS -- base64编码

在iOS7以后可以用NSData自带的base64EncodedStringWithOptions进行编解码&#xff1a; 方法如下&#xff1a; - (NSString *)encodeToBase64String:(UIImage *)image {return [UIImagePNGRepresentation(image) base64EncodedStringWithOptions:NSDataBase64Encoding64Charact…

OpenCV持久化(二)

如何利用OpenCV持久化自己的数据结构&#xff1f;我们来看看OpenCV中的一个例子。 MyData.hpp定义自己的数据结构MyData如下: #ifndef MYDATA_HPP #define MYDATA_HPP#include <opencv2/core/core.hpp> #include <iostream> #include <string>using namespac…

Excel、Exchange和C#

摘要&#xff1a;Eric Gunnerson 将向您介绍如何使用 Outlook、Excel 和 C# 创建自定义的日历&#xff0c;该日历可以提供适用于短期项目和长期项目的清晰明了的版式。 下载 csharp05152003_sample.exe 示例文件&#xff08;英文&#xff09;。 虽然一月份已经过去了&#x…

这个宝藏工具,给你一种黑客般的感觉

明天要交作业了&#xff0c;吴检正在宿舍熬夜爆肝拼命敲代码&#xff0c;劈里啪啦的键盘声和咔咔的鼠标声格外嘈杂&#xff0c;室友陈琛瞥了一眼&#xff0c;背过身&#xff0c;沉沉睡去&#xff0c;留下他一人在深夜无尽的黑暗中&#xff0c;断断续续却又没有尽头的咔咔声中凌…

LSTM神经网络

LSTM是什么 LSTM即Long Short Memory Network&#xff0c;长短时记忆网络。它其实是属于RNN的一种变种&#xff0c;可以说它是为了克服RNN无法很好处理远距离依赖而提出的。 我们说RNN不能处理距离较远的序列是因为训练时很有可能会出现梯度消失&#xff0c;即通过下面的公式训…

用C#实现在PowerPoint文档中搜索文本

用编程的方式根据对象模型很容易实现在Word、Excel文档中搜索文本&#xff0c;在PowerPoint里面也同样如此&#xff0c;使用对象模型有助于我们了解office的文档结构。 搜索的思路和方法基本是一样的&#xff0c;用PowerPoint应用程序对象打开指定的文档&#xff0c;用文档对象…

雷军的最后一次 重 大 创 业

这是我人生最后一次重大创业项目。我愿意押上人生全部的声誉&#xff0c;亲自带队&#xff0c;为小米汽车而战&#xff01;——雷军作者 | Carol头图 | 下载于视觉中国出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;3月29日19:30&#xff0c;小米春季新品发布会拉…

shell之冒号的作用

冒号&#xff1a; &#xff1a;在shell中是一种命令&#xff0c;意思是总是为真&#xff0c;但是却不做任何操作&#xff0c;即总是为真的空命令eg:[rootlocalhost ~]# ${abc:t1}-bash: t1: command not found[rootlocalhost ~]# : ${abc:t1}[rootlocalhost ~]# echo $abct1[ro…