May 27, 2011

Cross Site Request Forgery (CSRF) 相關資源與參考

什麼是CSRF?
https://www.owasp.org/index.php/CSRF

Cross-Site Request Forgery (CSRF) Prevention Cheat Sheet
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet

The Cross-Site Request Forgery (CSRF/XSRF) FAQ
http://www.cgisecurity.com/csrf-faq.html

ViewState是否能預防CSRF之研究 - ViewStateUserKey Doesn’t Prevent Cross-Site Request Forgery
http://alexsmolen.com/blog/?p=21

OWASP上針對解決CSRF的Open Source專案 - .Net CSRF Guard
https://www.owasp.org/index.php/.Net_CSRF_Guard

Codeplex上針對解決CSRF的Open Source專案 - AntiCSRF
http://anticsrf.codeplex.com/

Beginning ASP.NET Security一書(69~80頁)中針對CSRF的解釋與預防實作
http://www.amazon.com/Beginning-ASP-NET-Security-Wrox-Programmer/dp/0470743654

May 1, 2011

找不到ASP.NET狀態服務?

在開發系統階段時,為了開發過程方便,筆者常會透過ASP.NET狀態服務功能將Session保留起來,以避免重新建置應用程式後造成Session被清除,詳細的使用方式可參考保哥的「如何讓 ASP.NET 使用 Session 資料時不要再自動消失」。

這兩天筆者重灌家裡工作環境的電腦,將作業系統升級為Windows 7,並將之前的專案成功的建置完成後執行卻出現以下錯誤


April 1, 2011

可抽換元件設計模式 - IoC Pattern

在之前的文章[註1]中,筆者介紹了如何以Plugin Pattern實作低耦合且可抽換元件機制。本篇文章將介紹另一種廣泛使用的設計模式 - IoC Pattern

IoC為Inversion of Control的縮寫,中文名稱大多譯為「控制反轉」。根據筆者找到的文獻中,在Martin Fowler的文章「InversionOfControl」最後有提到IoC一詞是他從Johnson與Foote這兩位專家在1988年所發表的論文中看到的,但這兩位專家也是在別的地方看到這個詞,所以目前實際出處暫不可考。

March 22, 2011

使用ASP.NET AJAX呼叫PageMethods

筆者在「使用jQuery呼叫PageMethods」一文中介紹了jQuery呼叫PageMethods的方式,延續該篇文章的範例程式,本篇將介紹如何使用ASP.NET AJAX來呼叫PageMethods。

使用jQuery呼叫PageMethods

PageMethods功能的引入,允許使用者在Code-Behind中將方法公開出來讓Client端的Javascript可以非同步的方式呼叫Server端的程式,以下範例將介紹如何以jQuery來呼叫PageMethods,範例中將模擬使用者填寫會員註冊表單的情境。

March 17, 2011

可抽換元件設計模式 - Plugin Pattern

Plugin Pattern源於Martin Fowler的經典名著Patterns of Enterprise Application Architecture,以下為該書對Plugin Pattern的定義
Links classes during configuration rather than compilation.
中文的意思是透過反射(reflection)機制於執行期(run time)由設定檔(configuration)取得實際要執行的物件,它在實作上有幾項特色
  • 會有一個實作Factory Method Pattern的類別,用於生成實際要執行之物件(plugin object)
  • 設定檔內會有實際生成物件的組件名稱及型別,如放置在App.config或Web.config的appSettings中
  • 實際生成之物件必定實作一通用介面

什麼情況下我們會需要用到Plugin Pattern呢?當系統需要提供同一機制但不同實作時就會用到。