总结:
a)连接字符串
b)配置会话状态
c)编译配置
d)浏览器的功能
e)定制错误
f)身份验证
g)授权
h)锁定配置设置
i)ASP.NET页面配置
j)配置ASP.NET运行时设置
公共配置设置知识点
一.连接字符串
注意:把链接字符串写在一下两个标记的其中一个标记
appSettings--在1.0和1.1版本中,连接字符串是写在appSettings标记中的
connectionStrings ---在2.0版本以后,连接字符串写在connectionStrings 标记中
1)使用ASPNET_REGIIS.EXE给配置文件中的某个标记加密
让我们来看看如何使用ASPNET_REGIIS.EXE工具来加密<connectionStrings>配置节。
用VS.Net建立一个网站叫做EncryptTest,加入一个web.config文件。然后加入如下的<connectionStrings>配置节:
<connectionStrings>
<add name="connstr" connectionString=
"data source=.\sqlexpress;initial catalog=
northwind;integrated security=true" />
</connectionStrings>我们简单的加入了一个联接字符串,指向了Northwind数据库。然后打开default.aspx文件,拖拽一个GridView控件,并在Page_Load中输入如下代码:
protected void Page_Load(object sender, EventArgs e)
{
string strConn = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
SqlDataAdapter da = new SqlDataAdapter("select * from customers", strConn);
DataSet ds = new DataSet();
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
} 这段代码里,我们用ConfigurationManager类从<connectionStrings>配置节读取了联接字符串。这里用们有意的用了手动的方法代替了SqlDataSource空间,就是为了证明内置的类ConfigurationManager自动的机密了加密版本的联机字符串。
现在打开Visual Studio 2005命令提示,执行下面的命令:
aspnet_regiis -pe "connectionStrings" -app "/encrypttest"
-pe开关用来指定web.config中需要加密的节(我们的例子里是connectionStrings)。
-app开关用来指定IIS里面的虚拟路径
执行以后,如果你再查看一下web.config文件,你会看到这样的情形:
<connectionStrings configProtectionProvider=
"RsaProtectedConfigurationProvider">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm=
"http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm=
"http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData>
<CipherValue>NW4gFUtlA3XkbKu42FQ3kYV8EKmwzy9r53vrI2rjV
ZFqjsr00/MwS6TWqjnsguN09kWvNIrbfWu5+Gi+DLFhYnGm2NcuaCy
Vic8f5e0Q8u3E7zk2MegZmiri5bSELE1fZneWz4oFb+MHqA94ZO3Be
XBlocou6ydtmJPXZCqLsDQ=</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>T2fswq6Rt7g7VSNUnoe4kNFGSluWCBReQf3DRbXao/
sWaWs4mrJAI6Xy0zNDHY5pKXUUF9Kep2wG84rMVx0QtLIUjBaUKCnrm
Eb+53oYNPjN4Kf5zcPyWoaWwcus4LnJYNtg3oGJUvavZ0tjGXH9+5gB
w/xMrtfDcYAIom9l/IMcO92BKrvimjn/k4Mr8VXxGpvdMkAC3+e6dtW
JeUgQGpepO+RNpWymB5kWj38LjMQ=</CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>这个工具已经用RsaProtectedConfigurationProvider(默认的提供者)加密了connectionStrings节点,并且将加密过的标签返回给配置文件。你还可以指定具体的Protected Configuration Provider(加密保护配置提供者),使用-prov开关来指定。很简单,不是么?现在,浏览你的web页面。这个web页面将会在GridView标记里正确的显示Customers表的内容,这说明ConfigurationManager类在读取连接字符串的时候自动解密了其中的信息。
2)使用ASPNET_REGIIS.EXE解密配置节
如果你需要在开发过程中对连接串进行些改动要怎么办?不用担心,ASPNET_REGIIS.EXE工具同样支持解密节点,仅仅需要执行下面的命令就会恢复到你原来的未加密的版本。aspnet_regiis -pd "connectionStrings" -app "/encrypttest"唯一的区别就是,我们用-pd开关代替了-pa开关。
Encryption and decrypting via code
The task of encrypting and decrypting web.config can also be achieved via code. Let's see how.
Add a new web form to the same web site and design it as shown below:
通过代码加密与解密 加密与解密web.config功能同样可以通过代码来完成。让我们看看怎样完成的。在同样的站点下加入一个新的web页面,并且设计成下面的样子
-----图片------------
在"Encrypt Connection String"按钮的Click事件中加入如下代码:
protected void Button1_Click(object sender, EventArgs e)
{
Configuration config = WebConfigurationManager.
OpenWebConfiguration(Request.ApplicationPath);
ConfigurationSection section = config.ConnectionStrings;
if (!section.SectionInformation.IsProtected)
{
section.SectionInformation.ProtectSection
("RsaProtectedConfigurationProvider");
section.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Modified);
}
}
二、配置会话状态
<sessionState mode="InProc" timeout="10"></sessionState>
将session存放在本应用的进程中,一旦本应用结束,或者服务器停止服务,session就会被释放掉
<sessionState mode="StateServer" timeout="10"></sessionState>将session放置在服务器的另一个进程中,但是还是放在了服务器的内存中,如果服务器断电等意外发生了,session依然会丢失
aspnet_regsql
三、编译配置
<compilation debug="true" targetFramework="4.0" />
四、浏览器的功能
浏览器文件
五、定制错误配置
<customErrors mode="On" defaultRedirect="abc.htm">
<error statusCode="404" redirect="notfindpage.htm"/>
</customErrors>
----------------------
虽然我们发送给用户的公用错误信息是安全的,就是说它不会威胁到应用程序的秘密,但是这样的信息并不好看。也许你希望用户永远也看不到这样的信息。相反,当处理请求的过程中,如果发生了一个为处理的错误,你希望能够显示自己的“定制错误页面”,显示出自己的品牌以及特定的错误信息。
向ASP.NET 应用程序中增加定制错误信息非常容易。首先,编写自己的 web页面,它可以是任何类型的文件:.htm,.aspx,.asp,等等。然后在应用程序的config.web文件中修改配置信息,让它指向这个文件。
举例说明,以下这个配置信息说明在发生了任何未能预定处理错误的情况下,浏览器都应该被重定向到“ErrorPage.aspx”页面:
<configuration>
<customerrors mode="remoteonly" defaultredirect="ErrorPage.aspx" /></configuration>
<customerrors>
标记中的“defaultredirect”属性定义了在发生错误的情况下,用户将被重定向到的“默认”页面。或者,也可以根据响应的http代码状态,重定向到其它的页面来覆盖这个默认值。例如:重定向到一个特殊的“未找到文件”错误页面、“非法访问”错误页面、“服务器冲突”错误页面等等。
举例说明,以下的配置信息覆盖3个特定的http 状态代码,所有其它错误都返回到一个默认页面:
<customErrors mode="RemoteOnly" defaultRedirect="404/404.html">
<error statusCode="500" redirect="404/404.html"></error>
<error statusCode="404" redirect="404/404.html"></error>
<error statusCode="403" redirect="404/404.html"></error>
</customErrors>
在定制错误页面上有一件事我们已经遇到过,那就是虽然它们对于已经完成的情况非常有用,然而在开发过程中却非常难以对付。因为你预想到在开发过程中会有bug,并且当你发现的时候,真的希望看到实际的错误信息跟踪。为了解决这个问题,<customerrors>标记支持一个有3个值的“mode”属性:
“on”:意思是总是发出定制错误页面;
“off”:意思是从不发出定制错误页面(你总是看到原始的错误信息);
“remoteonly”:意思是只有当远程浏览器点击站点时才发出定制错误页面(而在实际机器上点击站点的开发人员看到的是详细的错误信息)。
六、身份验证配置
身份验证的三种方法:Windows Forms Passport
<authentication mode="Windows"/>
Forms 将基于 ASP.NET 窗体的身份验证指定为身份验证模式。
Passport 将 Microsoft Passport 指定为身份验证模式。
Windows 将 Windows 指定为身份验证模式。在使用 Internet 信息服务 (IIS) 身份验证方法(基本、简要、集成 Windows (NTLM/Kerberos) 或证书)时适用此模式。