TechEd 2008 筆記 - Day 3
8 |
上完整天課,晚上再整理筆記,比上班還操!
不過,上班後還有機會當學生是幸福的,所以坐前兩排是一定要的,全程不闔眼更是必要的堅持... (謎之聲: 你還真敢說? 有閉眼就天打雷霹哦!) 呃... 當然啦,這是相當崇高的理想,而我畢竟也還是血肉之軀,所以... XD
【Unit Test】
講師李智樺很像蔣公,我Google不到他的Blog,有人知請再通報
- 迷思: Java Developer很少不做Unit Test的,.NET Developer很少在做Unit Test的
- 不做Unit Test的理由: 老板沒要求何必雞婆、趕專案都來不及了測個屁、需求一直改哪來的美國時間測、我們的測試員哩?
- 有了Unit Test,接手前人/外包商的Code才有品質保障,Refactoring時也才能確保程式沒被改壞,好處很多
- Martin Fowler: 不相信文件,只相信Code;Code成千上萬行,要如何相信? 用Test驗證!
- DEMO: Visual Studio可透過按右鍵自動產生Unit Test相關專案及檔案。不一定要一次生完全部的Test,太複雜的可等程式不斷修改擴充,聞到Bad Smell(覺得再拖下去會出事)時再用VS的功能產生。
- Test Driven Development: 先寫Test Case再寫Code,強迫你再想一次需求(Second Thought)是額外的收獲。
- Unit Test時記得要檢視Coverage,確認有測到各種情境的分支。
- 重要的前車之鑑: 程式想不出來時,不要抓頭...
- 老師講的劍潭的笑話聽不懂...
【SQL 2008】
- 新資料型別: Date、Time(可到100ns)、DateTimeOffset(可含時區)、DateTime2(範圍大,可到100ns)。Time、DateTime2宣告可決定秒的精準位數,決定資料佔用的空間。
- INSERT INTO ... VALUES
( v11, v12, v13, v14, ... , v1n)
( v21, v22, v23, v24, ... , v2n)
可一次INSERT多ROW - User Defined Type可以破8KB
- Table Type,宣告Table Variable時,可以不用每次重新宣告欄位,直接指定變數的型別是Table Type即可。另外,Table Variable可以被當成Stored Procedure或UDF的參數傳遞。
- Grouping Set: 可簡化原本要GROUP BY不同欄位再UNION ALL的做法
- Merge: 可以設定沒有就新增、有就更新,讓合併資料表的工作更容易。說明
- 支援 += -= *= /=表示法
- SQLCLR: UDT, User Defined Aggregate也可大於8KB
- SQL 2008多了70種新的Collation,企圖與OS的選項一致
- HierarchyID, 空間資料, Filtered Index(只對符合某種條件的Rows做Index)
【SQL 2008 Security】
講師陳俊宇 Blog: http://sharedderrick.blogspot.com/
- EKM: Extensible Key Management,可以引用廠商提供的Provider做加密,藉由硬體運算減少Server負荷,並可享有金鑰資料分離的額外優勢。
- TDE: Transparent Data Encryption,設定憑證為全資料庫加密,即便mdf或備份檔被盜走,也無法Attach或Restore。設定TDE後,程式完全不用改。
- TDE以Page為單位加密,並有Checksum,唯FileStream DataType不加密。
- TDE可與資料壓縮併用(因先壓才加密),但與備份壓縮併用時無太大效果(密文之可壓縮性很差)
- TDE會導致tempdb也加密,效能略差。
- Enterprise/Developer Edition支援EKM/TDE
- 新的稽核機制,可針對全Server或Database做稽核
- 稽核機制應用範例: 監控帳號建立、刪除、改密碼,特定帳號對特定Table的SELECT
【WebAP的安全漏洞】
講師是大名鼎鼎的Birdman(邱銘彰),想看他的新文章可到阿瑪外傳。
雖然不意外主軸還是SQL Injection與XSS兩位老掉牙的頭號戰犯,但其中有不少精闢的分析歸納,十分精彩。
- 妙喻: 漏洞是系統功能的一部分,只是它沒有寫在規格書上,有些"功能"很強可以"做很多事"。
- WASC統計,平均每個Web有13個漏洞,其中9個很嚴重。
- 資安威脅排行維持XSS、SQL Inection領先,而去年竄出的Malicious File Extension,指的是掛馬這類行為。
- XSS一直是漏洞排行榜的冠軍。
- Samy利用社交網站MySpace的漏洞以XSS方式,被加成百萬人的好友。參考
- XSSed 網站仍有一大票仍存在XSS漏洞台灣網站的名單,很多是公家機關,而且上榜很久了。
- 常識: SQL Injection、XSS是什麼?
- 名言: 逃避不一定躲得過,面對不一定最難受
- SQL Injnection、XSS、Stack Overflow、藍盒子打免費電話的本質都很像,就是Data Channel被轉換成Command Channel
- 處理User輸入內含有毒物質的黑名單策略:
A. Block - 有毒就整批拒絕
B. Sanitize - 將有毒部分剔除(最後儲存結果與User輸入有出入)
C. Transform - a) Escape只換掉有毒部分 b) Encode 全部編碼 - XSS的Sanitrize不好做。例如: %3Cscript%3E, <scri<script>pt>,防不勝防
- AntiXss.HtmlEncode比HttpUtility.HtmlEncode來得安全,過濾得更徹底。
- Error Safty的程式設計:
A. No-Fail Guarantee: 做不到
B. Strong Guarantee: Block and Rollback
C. Basic Guarantee: Sanitize, Transform
【ASP.NET 3.5 SP1】
講師董大偉網站: http://studyhost.blogspot.com/
又是很充實,講得又快又多的一堂精彩課程,只能簡要提示如下,有興趣的自行深入研究。
- ASP.NET AJAX Script Combining: 減少一頁要載入十來個js的需求,一次全部取回以提高效率。參考
- Url Routing
- ASP.NET Dynamic Data,依據Schema自行產生清單、編輯Web UI,可透過Meta Attribute客製,例如: TextBox -> DateTimePicker,指定輸入範圍的Range Validation等。
- ADO.NET Data Service,將ADO.NET Data Entity以WCF方式提供出去,簡化遠端存取資料庫的Coding。
- ASP.NET MVC,對於UI、Data Logic的分割很徹底,抽換UI是一塊蛋糕(例如: ASPX->Silverlight),但這個架構較複雜,是否會值回票價,端賴應用的情境而定。
Comments
# by Will 保哥
錯字: Colation --> Collation
# by Prince
9.老師講的劍潭的笑話聽不懂... 他的重點是應該是最後一句"鄭成功" 取劍潭這個名字,應該是為了這個專案能成功吧! 我只是不知道哪裡有好笑...XDDD
# by Jeffrey
to 保哥,校正了,謝謝! to Prince,這讓我聯想到,配合老師當時講鄭成功的神情,會不會笑點在---"朕"成功? 有點冷就是了,哈!
# by Billy
今天剛收到個好消息,MS 將會支援 JQuery jQuery to ship with ASP.NET MVC and Visual Studio http://www.hanselman.com/blog/jQueryToShipWithASPNETMVCAndVisualStudio.aspx
# by Andy Lu
講師李智樺的 Blog http://ruddylee.spaces.live.com/
# by Andy Lu
蔣公 - 李老師的 Blog http://ruddylee.spaces.live.com/
# by km
李智樺講課太跳躍方式沒有聚焦, 老笑話, 浪費大家時間
# by 路人想發問
請問microsoft anti-xss library是.net寫的,有辦法轉換成JS的程式碼嗎? QQ 謝謝