日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

動易CMS 2007新特性體驗之旅——全面提高的安全性(4)_動易Cms教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

以下是引用片段:
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>
/// 更新作者
/// </summary>
/// <param name="authorInfo">作者實體</param>
/// <returns>更新成功返回true,否則返回false</returns>
public bool Update(AuthorInfo authorInfo)
{
Parameters parms = new Parameters();
parms.AddInParameter("@ID", DbType.Int32, authorInfo.Id);
parms.AddInParameter("@UserId", DbType.Int32, authorInfo.UserId);
parms.AddInParameter("@Name", DbType.String, authorInfo.Name);
parms.AddInParameter("@Type", DbType.String, authorInfo.Type);
………………
return DBHelper.ExecuteProc("PE_Accessories_Author_Update", parms);
}

注:這里的代碼與實際程序有所區(qū)別。

  在這段程序中,我們至少使用了兩種安全方式。一是用了存儲過程,通過將參數(shù)傳遞給存儲過程,杜絕了注入的可能。二是參數(shù)類型安全化,使用的參數(shù)都是強類型的。如這一行代碼:parms.AddInParameter("@ID", DbType.Int32, authorInfo.Id);。限制了傳過來的參數(shù)必須是整型的,假如從頁面中傳過來的參數(shù)不是整型(注入攻擊時),就會直接拋出異常,中斷執(zhí)行。動易CMS2007的所有查詢語句,都是采用這種方式。這樣基本上就杜絕了SQL注入問題。

查看更多 動易Cms教程  動易Cms模板

來源:模板無憂//所屬分類:動易Cms教程/更新時間:2007-08-20
相關動易Cms教程