惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
SegmentFault 最新的问题
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Attack and Defense Labs
Attack and Defense Labs
F
Full Disclosure
Vercel News
Vercel News
N
News | PayPal Newsroom
The GitHub Blog
The GitHub Blog
H
Hacker News: Front Page
H
Heimdal Security Blog
P
Privacy International News Feed
博客园 - 司徒正美
Google DeepMind News
Google DeepMind News
N
Netflix TechBlog - Medium
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cisco Blogs
L
Lohrmann on Cybersecurity
D
Docker
Recent Announcements
Recent Announcements
Security Archives - TechRepublic
Security Archives - TechRepublic
人人都是产品经理
人人都是产品经理
C
CXSECURITY Database RSS Feed - CXSecurity.com
P
Proofpoint News Feed
T
Tailwind CSS Blog
C
Check Point Blog
博客园 - 叶小钗
Google Online Security Blog
Google Online Security Blog
Martin Fowler
Martin Fowler
Stack Overflow Blog
Stack Overflow Blog
博客园 - 聂微东
S
Secure Thoughts
博客园 - Franky
博客园_首页
阮一峰的网络日志
阮一峰的网络日志
P
Palo Alto Networks Blog
Latest news
Latest news
量子位
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 三生石上(FineUI控件)
The Cloudflare Blog
Last Week in AI
Last Week in AI
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Cyberwarzone
Cyberwarzone
小众软件
小众软件
Cisco Talos Blog
Cisco Talos Blog
Hacker News: Ask HN
Hacker News: Ask HN
T
Threatpost
T
Tenable Blog
P
Privacy & Cybersecurity Law Blog
WordPress大学
WordPress大学

博客园 - Bireyou

Visual Studio 更改护眼颜色 修复SQL中的孤立账户 在SQL中查看文件组中有哪些表 出现“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”的解决方法 Ext.Net开发过程中问题集锦 SQL Server 2005 中重建Master数据库 ASP.NET实现下载的中文文件名乱码处理 - Bireyou - 博客园 NUnit2.0详细使用方法 如何配置和部署安全的.NET三层应用 ASP.NET如何在客户端调用服务端代码 ASP.NET 2.0 绑定高级技巧 - Bireyou 把.NET程序部署到没有安装.NET Framwork的机器上 SourceGrid 2.0 认识ASP.NET配置文件Web.config DataGrid中创建复杂表头方法 showModalDialog()、showModelessDialog()详解 每一项都是js中的小技巧,但十分的实用! 在ASP.NET页面间传递任意数据的方法与实例 javascript函数库
加密Web.config中的信息
Bireyou · 2005-10-27 · via 博客园 - Bireyou

加密Web.config中的信息
  我们都知道web.config可以保存连接字符串,我们在程序中也都是这么做的,web.config是XML,所以它有清晰的结构,是我们很容易可以读懂它,但是这也出现一个问题,我们数据库完全暴露给浏览该文件的人,这是我们所不希望的。我们可以使用一个简单有效的加密算法来加密这段连接字符,使直接浏览该文件的人不能清楚地看到这些信息。
  
  我们一般以下面的形式保存连接字符串:
     <appSettings>
       <add key="ConnectionString" value="server=localhost;database=test;pwd=sa;uid=sa;" />
     </appSettings>
  
  为了我们自己可以看得明白这些加密的字符我们需要一个额外的程序专门生成这些加密数据(这个额外的程序你可以写得很复杂但是为了说明问题,我们使用简单的base64编码数据,这其实不是加密数据,但是原理是一样的)。我们建立一个WinForm工程,专门用来生成明文到密文的(base64)转换,如果使用其它的加密算法可以替换这个加密过程。转换按钮里面的代码如下:
  
  private void button1_Click(object sender, System.EventArgs e) {
    byte[] data = System.Text.ASCIIEncoding.ASCII.GetBytes(this.textBox1.Text);
    string str = Convert.ToBase64String(data);
    this.textBox2.Text = str;
   }
  
  其中textBox2里面就是变码以后的字符。我们可以将我们web.config里面的连接字符("server=localhost;database=test;pwd=sa;uid=sa;")取出来放在这个程序里面执行生成一个新的字符串(c2VydmVyPWxvY2FsaG9zdDtkYXRhYmFzZT10ZXN0O3B3ZD1zYTt1aWQ9c2E7)。
  
  之后我们用这个字符替换未编码的字符串。如下所示:
    <appSettings>
      <add key="ConnectionString"  value="c2VydmVyPWxvY2FsaG9zdDtkYXRhYmFzZT10ZXN0O3B3ZD1zYTt1aWQ9c2E7" />
    </appSettings>
  
  哈哈!看不见了吧!但是我们的程序也不认识了:-( 没关系我们自己知道加密算法所以我们的程序可以看懂,最后就是在程序中如何使用了,我们的程序需要理解这个字符串的意义,我们在数据访问层里面添加如下的工具方法
  
  private string GetConnectionString(){
    string strconn = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
    byte[] data = Convert.FromBase64String(strconn);
    string strRealConn = System.Text.ASCIIEncoding.ASCII.GetString(data);
    return strRealConn;
   }
  
  这样就可以得到真实的连接字符串了。
  
  上文一个简单的加密(伪加密,其实本文实现的是一个编码而非加密)的方法,也许可以骗过一些人的眼睛,但是对于了解内幕的人还是起步到什么保护的作用,所以你可以扩展这个算法,使用对称或者非对称的加密算法替换该案例里面的编码算法,这样基本上就万无一失了。