The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

使用 SecureString 類別保護你的字串值

我們其實可以透過許多工具取得 .NET 應用程式執行時在記憶體中的資料,例如:WinDbgDebug Diagnostic Tool。而當你在 .NET 程式中需要將一些較機密的資料暫存在變數(物件)時,若單純的使用 System.String 類別建立執行個體(Instance)儲存資料,就很容易被一些除錯工具或傾印(dump)工具取得原始資料,原因是 System.String 類別是不變的(immutable),且當不再需要它時也無法透過程式排程進行記憶體回收。所以當你使用 System.String 類別儲存文字內容在記憶體中,就很難保證在物件不用了之後能夠即時在記憶體中刪除,這樣的程式就有被資訊揭露(Information Disclosure)的安全風險。

... 繼續閱讀 ...

改用 SqlMetal.exe 建立 LINQ to SQL 的 DBML 檔

我們通常在寫 LINQ to SQL 專案時,都會利用 Visual Studio 2008 內建的 LINQ to SQL DBML Designer 讓我們透過視覺化的介面將資料庫表格、檢視表或預儲程序從 Server Explorer 拖曳到設計視窗中,不過缺點就是當資料庫結構(DB Schema)改變了之後就需要跟著修正,我通常有以下選擇:

... 繼續閱讀 ...

開發ASP.NET請不要使用 Environment.CurrentDirectory

我們之前有位新手工程師(現在已經不新了)曾經在 ASP.NET 中使用 Environment.CurrentDirectory ( 取得目前之工作目錄的完整路徑 ) 來存取網站內的檔案,一般來說很少有人會用 Environment.CurrentDirectory 來存取網站上的檔案路徑,我自己猜測應該是一般的 C# 書籍都是用 Console Program 來撰寫範例,所以可能是新手上路搞不清楚狀況才這樣寫,而且在 Visual Studio 的開發環境中這樣使用還真的不會出錯呢!所以才導致新人一直使用錯誤的方法開發,直到程式被部署到測試主機後才發現程式無法執行。

... 繼續閱讀 ...

.NET 3.5 Enhancements Training Kit RTM

之前在 Visual Studio 2008 推出的時候,同時也推出了一套 Visual Studio 2008 and .NET Framework 3.5 Training Kit 訓練教材,可供開發人員下載自我學習。而隨著這次 Visual Studio 2008 Service Pack 1.Net Framework 3.5 Service Pack 1 的推出,也同時推出了 .NET 3.5 Enhancements Training Kit 訓練教材,其中包含了許多新增的範例程式、簡報、實驗演練(Labs)教材等,想學習新技術的人不用在等了,趕快下載回去自修吧。

... 繼續閱讀 ...

透過 Fiddler 快速修改網頁內容用以除錯上線的網站

大家都知道 Fiddler 可以用來做 HTTP 追蹤/除錯,尤其是對 JavaScript/AJAX/XHR 使用頻繁的今天更是必備的工具之一,除了可以抓取所有 HTTP 的封包外,Fiddler 還可以用來修改透過 HTTP 傳回來的網頁內容(HTML)、JavaScript 檔(*.js)、CSS 檔(*.css) 或任何圖檔,都可以透過自訂的 Fiddler Script 或 Extension Plugins 進行修正後再傳回到瀏覽器中,這對於已經上線的網站來說,十分的適合用來測試 HTML/CSS/JS 修改過後的顯示結果。

... 繼續閱讀 ...

介紹好網站:Regular Expression Library

之前就講過 Regular Expression 是學一次用一輩子且是程式設計師一定要學的技能之一,不過由於 Regular Expression 的語法太過特殊且功能強大,讓許多人在初學的時候就很害怕,甚至乾脆不學,有需要的時候就到網路上到處找,雖然也能解決問題,不過複製一個看不懂的東西內心總是不太紮實的,所以我建議無論如何任何一位程式設計師都一定要花時間學會看懂所有 Regular Expression 語法,並進而自行撰寫所需的 Regular Expression 表示式。

... 繼續閱讀 ...

如何強迫 .Net 應用程式輸出英文的例外訊息

因為常常需要跟國外 Blogger 交流,甚至回報某些國外 .Net 產品的 Bug 給他們,所以常常都要自行翻譯「例外訊息」( Exception Message ),不過有時後真的會翻錯。再者,若在開發 .Net 時遇到一些很少見的問題,用中文搜尋不到時,可能會想將訊息翻成英文後再搜尋一次,不過也有可能因為翻譯錯誤導致搜尋結果不夠精準。所以若能夠在除錯的時候輸出英文版的例外訊息,那該有多好阿!

... 繼續閱讀 ...