修改Setting.cs文件(Settings.settings的部分类)是否安全

时间:2012-06-21 09:17:02

标签: c# app-config partial

正如你可以从标题中理解的那样,我修改了Settings.cs文件。添加了一些属性,一些代码到了约束器(公共设置())和覆盖了Save()函数。但它是一个空间类,所以我知道什么样的修改IDE生成的文件时必须面对的后果,特别是.designers.It不是设计师,而是IDE生成内部密封部分,我想知道它是否100%安全?

internal sealed partial class Settings
{
    public System.Data.SqlClient.SqlConnection AppDbConnection
    {
      get 
      {
        if (_AppDbConnection == null)
        {
          try
          {
            _AppDbConnection = new System.Data.SqlClient.SqlConnection(_ConnectionString);
            _AppDbConnection.Open();
          }
          catch (System.Exception ex) { throw ex; }
        }
        return _AppDbConnection;
      }
    }

    private System.Data.SqlClient.SqlConnection _AppDbConnection;
    private string _ConnectionString;


public override void Save()
{
  System.IO.FileInfo fi = new System.IO.FileInfo(System.Windows.Forms.Application.StartupPath + "\\Settings.dat");
  System.IO.FileStream fs = new System.IO.FileStream(fi.FullName, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write);
  System.IO.StreamWriter sw = new System.IO.StreamWriter(fs, System.Text.Encoding.GetEncoding("iso-8859-9"));
  try { sw.Write(Helper.BinarySerializer.ToBinary(_SettingsBase)); }
  catch (System.Exception ex) { throw ex; }
  finally { sw.Close(); fs.Close(); }
  base.Save();
}


    public Settings()
    {
      try
      {
        System.IO.FileInfo fi = new System.IO.FileInfo(System.Windows.Forms.Application.StartupPath + "\\Settings.dat");
        if (fi.Exists)
        {
          System.IO.FileStream fs = new System.IO.FileStream(fi.FullName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
          System.IO.StreamReader sr = new System.IO.StreamReader(fs, System.Text.Encoding.GetEncoding("iso-8859-9"));
          string data = sr.ReadToEnd();
          if (data != "")
          {
_SettingsBase = (AppCode.SettingsBase)Helper.BinarySerializer.BinaryTo(data);
            _ConnectionString = Helper.Crypto.DecryptString(_SettingsBase.ConnectionString, "");
}

2 个答案:

答案 0 :(得分:1)

如果您的添加内容位于某个代码生成工具单独文件中,则IDE不会覆盖您的更改(只是不要命名)它以* .designer.cs结尾,以防万一) 因此,至少从IDE的代码生成中是安全的。

编辑visual studio生成的文件(这些文件通常在顶部有注释警告您)。

这样的自动生成的文件是将类声明为部分的主要原因之一,因此您可以将其扩展到另一个文件中,而不必担心您的更改会被覆盖。

注意:虽然

,但该连接字符串中的任何敏感数据都不安全

答案 1 :(得分:0)

  

知道它是否100%安全?

100%不安全。设计师更改=文件丢弃。

制作另一个文件,部分,在那里添加你的代码。此文件中的任何代码更改都不安全且会丢失。

意外等待发生。