当前位置:编程学习 > C#/ASP.NET >>

hard code在代码中的db connect密码,用notepad查看生成的.exe,竟然明文一览无余!

大家可以花三分钟时间,简单实验一下:

无论在Visual Studio .NET 2005或Visual Studio .NET 2008里,新建一个Project,我选的是C#语言.

类似如下定义class member变量,一个有const修饰符,另一个没有,并在一个method中引用。

 public partial class Form1 : Form
    {
        private const string strConnectDB = @"Data Source=\My Documents\test1.sdf;password='123'";
        private string strStrange = @"strange? source code was exposed in .exe!";

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string strTemp1,strTemp2,strTemp3;

            strTemp1 = strConnectDB;

            strTemp2 = "select id,name from MyTable where id = 1999";

            strTemp3 = strStrange;

        }

Build Project,然后用记事本打开这个生成的 .exe查看;在文件后端,你看到了什么?!

Hard code的这两个member variables的值,以及local variable - strTemp2的值,
竟然在"二进制"结果文件里,曝漏无疑,只是变成全角而已!!


在有些简单的DB App里,某些变量(如connection string),我们希望直接hard code在code中。
但是,不希望end user,用notepad就能看到变量的值!
尤其如 connect string中的db file name & password! 

怎么办?谢谢! --------------------编程问答-------------------- .net混淆进行加密 --------------------编程问答-------------------- 用.net自带的混淆进行加密 --------------------编程问答-------------------- 啊 混淆, 好高深=,=
百度了下, 很晕...
谁详解下, .net 自带混淆, 是啥? =,= --------------------编程问答-------------------- 这个..混淆了也没多大用.
或者你即使用vc也没用.

因为常量字符串不管是C++
还是C#都是明文保存的.

要加密的话录入时就加密

另外lz摆脱描述用全中文或全英文(变量名之类的除外).
中英混合会让人看着头疼. --------------------编程问答-------------------- 忘了一说,某些可以打乱常量字符串的混淆器可以达到你的要求 --------------------编程问答-------------------- 把一个加过密的连接字符串写入常量,运行时解密为一个静态变量 --------------------编程问答-------------------- 把const 去掉 --------------------编程问答-------------------- 混淆啊
或者内建一套解码函数,程序里保留解码函数和加密后的字串.

加密程序放在本地,不要公开. --------------------编程问答-------------------- 与const无关哦,没有const的那个strStrange,在.exe中也可以看到它的值,全角的。
用混淆是一个办法,比较麻烦。只是做个基本防范就可以了,没想搞得太复杂。
成员变量的值,都是ascii明文保存在.exe吗?
谢谢你的关注与答复! --------------------编程问答-------------------- 而且好像一赋值,变量的值就会暴漏,如上面例子里的“password='123'”,
在.exe里,可以看到两次!!!
大家可以实验一下!
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,