動易CMS 2007新特性體驗之旅——全面提高的安全性(4)_動易Cms教程
| 以下是引用片段: 4、注入漏洞攻擊防范: ●使用類型安全的SQL參數(shù)化查詢方式,從根本上解決SQL注入的問題 ●對于不能使用參數(shù)化查詢的部分(比如in、like語句),使用嚴格的過濾函數(shù)進行過濾 ●限定URL的傳遞參數(shù)類型、數(shù)量、范圍等來防止通過構造URL進行惡意攻擊 |
在ASP/PHP程序中,查詢語句的生成一般是這樣的代碼方式:
Conn.Execute("SELECT Province FROM PE_Province WHERE Country='" & Country & "' ORDER BY ProvinceID")
這樣的方式,假如一不小心沒有對要放入SQL查詢語句中的Country變量進行防SQL注入過濾,就有可能產(chǎn)生注入問題。這方面的教程實在太多,大家有愛好可以到網(wǎng)上搜索一下。而由此帶來的教訓則是非常深刻。動易之前發(fā)現(xiàn)的一些注入漏洞問題,都是因為程序員不小心沒有過濾有關變量造成的。而縱觀網(wǎng)上許多程序,還有許多地方是根本就沒有將提交過來的值進行過濾就放入查詢語句中。如:
Sql = "SELECT Boardid, Boardtype, Boarduser FROM Board WHERE Boardid = " & Request("boardid")
Set Rs = Execute(Sql)
這樣的程序的安全性可想而知。
動易CMS2007中,所有的查詢語句都是類似如下代碼:
| 以下是代碼片段: /// <summary> |
在這段程序中,我們至少使用了兩種安全方式。一是用了存儲過程,通過將參數(shù)傳遞給存儲過程,杜絕了注入的可能。二是參數(shù)類型安全化,使用的參數(shù)都是強類型的。如這一行代碼:parms.AddInParameter("@ID", DbType.Int32, authorInfo.Id);。限制了傳過來的參數(shù)必須是整型的,假如從頁面中傳過來的參數(shù)不是整型(注入攻擊時),就會直接拋出異常,中斷執(zhí)行。動易CMS2007的所有查詢語句,都是采用這種方式。這樣基本上就杜絕了SQL注入問題。
- MAC錯誤的解決方法
- 如何屏蔽動易后臺導航里的某個功能菜單?
- 動易.NET版本留言自動選定欄目方法
- 動易SiteFactoty整合Discuz!NT3.0
- 在任意位置獲取根節(jié)點ID標簽
- 如何開啟SiteWeaver6.8的支持,反對功能
- Windows 2008安裝動易.NET系統(tǒng)之四----動易系統(tǒng)安裝篇
- Windows 2008安裝動易.NET系統(tǒng)之三----數(shù)據(jù)庫篇
- Windows 2008安裝動易.NET系統(tǒng)之二----IIS、目錄環(huán)境配置篇
- 數(shù)據(jù)庫修復,SQL Server 2005內部操作不一致的處理
- 如何安裝動易.net程序權限配置
- 為什么提示對Windows系統(tǒng)文件夾下的Temp目錄沒有訪問權限?
- 相關鏈接:
- 教程說明:
動易Cms教程-動易CMS 2007新特性體驗之旅——全面提高的安全性(4)
。