分享
 
 
 

分享:安全存放web项目数据库连接字符串

王朝c#·作者佚名  2006-12-17
窄屏简体版  字體: |||超大  

我的做法是这样:

1、在项目ABC的下面建目录Settings,里面有文件Settings.xml,其内容是:

<?xml version='1.0' encoding='utf-8' ?>

<Section Name='Settings'>

<Key Name='SQLServer' Value='mySvr' />

<Key Name='SQLDatabase' Value='myDb' />

<Key Name='SQLUID' Value='myId' />

<Key Name='SQLPWD' Value='myPw' />

</Section>

当然,这里就是数据库连结的基本信息。

2、在项目的web.config中,加入:

<configuration>

.....

<appSettings>

<add key='SettingsFile' value='.\Settings\Settings.XML'></add>

</appSettings>

</configuration>

3、在Global.asax.cs中:

protected void Application_Start(Object sender, EventArgs e)

{

SetConnectionString();

}

private void SetConnectionString()

{

String sServer, sDB, sUID, sPWD, strSettingsFile;

strSettingsFile = System.Web.HttpContext.Current.Server.MapPath('\\ABC\\') + System.Configuration.ConfigurationSettings.AppSettings['SettingsFile'];

Application['DatabaseConnectionString'] = '';

try

{

sServer = clsCommon.ReadSettings(strSettingsFile, 'SQLServer');

sDB = clsCommon.ReadSettings(strSettingsFile, 'SQLDatabase');

sUID = clsCommon.ReadSettings(strSettingsFile, 'SQLUID');

sPWD = clsCommon.ReadSettings(strSettingsFile, 'SQLPWD');

Application['DatabaseConnectionString'] = 'Server=' + sServer.Trim() + ';Database=' + sDB.Trim() + ';uid=' + sUID.Trim() + ';pwd=' + sPWD.Trim() + ';';

}

catch(Exception excp)

{

throw(excp);

}

}

这里,从web.config中读到Setting.xml所在的相对路径,然后找到服务器上的文件,再读取其内容,就设定了Application级别的变量DatabaseConnectionString,当然,如果是要求各个session的连接字符串不一定相同,可以改成Session级别的。

4、在第3步中,用到的读取xml文件的函数实现如下:

using System;

using System.Xml;

using System.Data;

using System.Data.SqlClient;

using System.IO;

using System.Text;

using System.Web;

namespace ABC

{

/// <summary>

/// Summary description for clsCommon.

/// </summary>

public class clsCommon: ABC

{

private const String NOTFOUND = '<<nothing>>';

public clsCommon()

{

//

// TODO: Add constructor logic here

//

}

static public String ReadSettings(String strSettingsFile , String sKey)

{

XmlTextReader xmlTR = new XmlTextReader(strSettingsFile);

XmlDocument m_xmlDocument = new XmlDocument();

m_xmlDocument.Load(xmlTR);

xmlTR.Close();

String strResult;

strResult = GetSettingStr(m_xmlDocument, 'Settings', sKey, '');

return strResult;

}

static public String GetSettingStr( XmlDocument xmlDocument , String SectionName , String KeyName, String DefaultValue )

{

String sKeyValue ;

sKeyValue = _GetSetting(xmlDocument, SectionName, KeyName);

if (sKeyValue == NOTFOUND )

sKeyValue = DefaultValue;

return sKeyValue;

}

static public String _GetSetting(XmlDocument xmlDocument ,String SectionName ,String KeyName )

{

String sKeyValue;

XmlNode xnSection;

XmlNode xnKey ;

xnSection = xmlDocument.SelectSingleNode('//Section[@Name='' + SectionName + '']');

if(xnSection == null )

sKeyValue = NOTFOUND;

else

{

xnKey = xnSection.SelectSingleNode ('descendant::Key[@Name='' + KeyName + '']');

if( xnKey == null )

sKeyValue = NOTFOUND;

else

sKeyValue = xnKey.Attributes['Value'].Value;

}

xnKey = null;

xnSection = null;

return sKeyValue;

}

}

总结:安全存放web项目的数据库连接字符串,可以把它保存在另一个目录的xml文件中,易于维护、更换,同时,可以设置此xml设置文件只允许asp_net用户访问,实现了安全保护。

回复人: cuike519(studing sps(修练中...)) (

) 信誉:100

2004-07-03 19:06:00

得分: 0

支持!!!

可是放在Web.config里面有什么不安全的?如果在Web.config里面不安全放在其他的目录里面就更不安全了!你可以做一个简单的试验,放一个xml文件和web.config在一起,web.config你打不开但是那个xml文件肯定可以打开!

回复人: athossmth(athos) (

) 信誉:100

2004-07-03 19:24:00

得分: 0

哪里哪里,当然了,一般在web.config中就足够了。

是这样的,我们这里的控制要求是,最后项目ProjectABC发布的目录是:

\\ServerA\C$\APPS\ProjectABC而连接字符串要放到

\\ServerA\C$\APPS\Settings\SettingABC.xml

里,在Project的IIS virtual directory之外,统一管理。

本文原发表于 http://community.csdn.net/Expert/topic/3143/3143428.xml

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有