當應用伺服器受到攻擊,我們採取的措施大致分為以下幾個步驟: 1、伺服器隔離 檢查埠,禁掉網卡 2、修改賬號、密碼,防火牆策略等 3、殺毒 4、應用重新部署 當然,這些工作大部分是由伺服器維護人員來做,對於我們開發人員來說,也是可以貢獻自己一份力量的, 比如部署應用配置項的時候資料庫連接採用加密手段 ...
當應用伺服器受到攻擊,我們採取的措施大致分為以下幾個步驟:
1、伺服器隔離
檢查埠,禁掉網卡
2、修改賬號、密碼,防火牆策略等
3、殺毒
4、應用重新部署
當然,這些工作大部分是由伺服器維護人員來做,對於我們開發人員來說,也是可以貢獻自己一份力量的,
比如部署應用配置項的時候資料庫連接採用加密手段(本文以entity framework從資料庫自動生成實體數據模型為例):
項目中添加完實體數據模型edmx以後,配置文件會生成如下的連接字元串:
<connectionStrings> <add name="testEntities" connectionString="metadata=res://*/TestDb.csdl|res://*/TestDb.ssdl|res://*/TestDb.msl;provider=System.Data.SqlClient;provider connection string="data source=192.198.110.123;initial catalog=test;persist security info=True;user id=sa;password=Password01!;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" /> </connectionStrings>
這樣的寫法部署到伺服器上以後,資料庫的IP地址,連接資料庫的用戶名、密碼全都暴露出來,這樣對於數據來說是很不安全的
我們將資料庫的連接字元串配置成如下的寫法:
<appSettings> <add key="testEntities" value="res://*/TestDb.csdl|res://*/TestDb.ssdl|res://*/TestDb.msl;System.Data.SqlClient;192.198.110.123;test;ExUeYbu5sxY=;QMpp1xTZ0ROSl1JNeGawDEmFJWg=" /> </appSettings>
其中,value由metadata;Provider;data source;initial catalog;user;password6個部分組成,分號隔開,後面2個是用戶和密碼,配置成加密的字元串。
edmx裡面需修改的配置如下:
1、修改
public testEntities() : base("name=testEntities") { }
為
public testEntities() : base(Config.DbCon) { }
2、Config類(連接資料庫用戶名、密碼此處採用xxtea加密演算法,也可選用其他加密演算法):
public class Config { private static string m_dbcon = string.Empty; public static string DbCon { get { if (m_dbcon == string.Empty) { m_dbcon = ConfigurationManager.AppSettings["testEntities"]; string[] m_dbcon_arr = m_dbcon.Split(';'); m_dbcon = string.Format("metadata={0};provider={1};provider connection string='data source={2};initial catalog={3};persist security info=True;user id={4};password={5};MultipleActiveResultSets=True;App=EntityFramework';", m_dbcon_arr[0], m_dbcon_arr[1], m_dbcon_arr[2], m_dbcon_arr[3],XXTeaHelper.Decrypt( m_dbcon_arr[4]),XXTeaHelper.Decrypt( m_dbcon_arr[5]) ); } return m_dbcon; } } }