聯系信息 首頁/關于公司/軟件產品安全技術介紹

軟件產品安全技術介紹

第一章 軟件系統代碼安全

1.1安全措施提要

1、代碼、程序分離機制(三層架構)

2、預防SQL注入

3、MD5加密

4、Cookie存儲與Session控制

5、特殊字符過濾

6、文件上傳漏洞防御(防掛馬)

7、建立網站(軟件)系統文件對照表

1.2代碼、程序分離機制

    1、系統安全運行機制是采用用戶界面表示層(USL)+業務邏輯層(BLL)+數據訪問層(DAL)三層分離的結構原理。

2、代碼、程序分離機制的意義在于,用戶表示層全部存儲于數據庫表文件,隔斷前臺用戶訪問讀寫時對界面層的攻擊破壞。

例:

用戶界面表示層(USL)

<div class=indexCase>

<UL>

ArticleList(1001,11|34,true,0,8,false,true,,0,3,True,30,0)

 <LI><a class="" href="{$ArticleUrl}" title="{$Title}" target="_blank">{$ArticlePic(200,290)}

 <div><SPAN>{$Title}</SPAN><I>{$UpdateDate}</I><EM>{$Hits} </EM></div></A></LI>

/ArticleList

</UL>

</div></div>

其中:{$ArticleUrl}、{$ArticlePic(200,290)}為執行特定功能的參數標簽,并以數據形式,存儲于數據表中。

業務邏輯層(BLL)

Asp代碼片段:

    InfoUrl = GetArticleUrl(rsPic("ParentDir"), rsPic("ClassDir"), rsPic("UpdateTime"), rsPic("ArticleID"), 

rsPic("ClassPurview"), rsPic("InfoPurview"), rsPic("InfoPoint"))

Private Function GetCurArticleUrl()

    Dim  strCur

    strCur = GetArticleUrl(ParentDir, ClassDir, rsArticle("UpdateTime"), rsArticle("ArticleID"), ClassPurview, rsArticle("InfoPurview"), rsArticle("InfoPoint")) 

    GetCurArticleUrl = strCur

End Function

1.3預防SQL注入

系統中所有的SQL查詢語句的開發規范都以(傳參)參數傳遞的方式,入侵者無法通過構建特殊的輸入作為參數傳入Web應用程序,通過執行SQL語句進而執行攻擊者所要的操作非法數據侵入系統。

例:以我公司所開發的系統中某段更新程序代碼片段舉例

C#代碼片段:

public int UpdateUser(Account acc) {

     Int  Result=Convert.ToInt32(SqlHelper.ExecuteNonQuery(@"update SJ_User set LoginName=@LoginName,

TrueName=@TrueName,PassWord=@PassWord, eceivePassWord=@ReceivePassWord, IsLocked=@IsLocked where UserID=@UserID",

           new SqlParameter("@TrueName", acc.TrueName),

           new SqlParameter("@LoginName", acc.LoginName),

           new SqlParameter("@UserID", acc.UserID),

           new SqlParameter("@PassWord", acc.PassWord),

           new SqlParameter("@ReceivePassWord", acc.ReceivePassWord),

           new SqlParameter("@IsLocked", acc.IsLocked)));

        return Result;

    }

1.4 MD5加密

MD5的全稱是Message-Digest Algorithm 5(信息-摘要算法),系統中對用戶的密碼、加密文件通過MD5的加密形成密文保存于數據庫表,當用戶登錄系統是利用數據表中加密后的字符串與用戶登錄是輸入的密碼,用MD5加密形成的字符串比對,以確定用戶輸入的密碼是否正確。

例:

普通字符串加密前123456,MD5加密后字符串:

16位:49ba59abbe56e057
    32位:e10adc3949ba59abbe56e057f20f883e 

1.5 Cookie存儲與Session狀態保存

在開發B/S架構的項目系統中,存在客戶端信息保存的安全問題。為了加快B/S架構項目系統的用戶訪問速度,一般情況我們會將一些用戶信息保存在客戶端或者服務器內存中以減少服務器響應的頻次與存儲負荷。對于客戶端的數據存儲存在信息安全和客戶端Cookie設置的不確定性。我們系統一般的處理方式為將標記客戶索引的數據(如UserID,此信息不會產生數據泄密的情況)存儲于客戶端,其它信息存儲于Session中,在客戶端離開訪問時由服務器回收。而用戶索引由客戶端保存。此數據管理機制的意義在于系統即提高的數據響應速度又做到了信息安全。

1.6特殊字符過濾

輸入框是黑客利用的一個目標,他們可以通過輸入腳本語言等對用戶客戶端造成損壞;如果該輸入框涉及數據查詢,他們會利用特殊查詢語句,得到更多的數據庫數據,甚至表的全部。因此必須對輸入框進行過濾。但如果為了提高效率僅在客戶端進行輸入合法性檢查,仍有可能被繞過。

防范技巧:在處理類似留言板、BBS等輸入框的ASP程序中,最好屏蔽掉HTML、JavaScript、VBScript語句,如無特殊要求,可以限定只允許輸入字母與數字,屏蔽掉特殊字符。同時對輸入字符的長度進行限制。而且不但要在客戶端進行輸入合法性檢查,同時要在服務器端程序中進行類似檢查。

1.7文件上傳漏洞防御(防掛馬)

    掛馬指網站被黑客通過入侵手段拿到修改頁面的權限,在網頁的源代碼中插入網頁木馬(惡意代碼),用戶在訪問網頁時就會運行網頁木馬受到漏洞攻擊,從而自動下載并執行病毒木馬程序。

   預防文件上傳漏洞的方式有:

    1、網站前臺不設置有上傳文件功能的程序文件,并且文件上傳須設置用戶身份認證機制,只有通過系統身份認證的用戶才能上傳文件。

    2、將FileSystemObject組件、WScript.Shell組件、Shell.Application組件改名,然后禁用Cmd.exe。即使黑客將木馬成功上傳到服務器中,但是由于組件已經被改名,木馬程序也是無法正常運行的!

    3、過濾上傳文件的文件類型,約束文件的擴展名。禁止諸如asp\asa\js\exe\com等文件類型的文件上傳。

    4、系統數據庫文件人工備份,不采用后臺管理的恢復/備份數據庫功能,防止.gif圖片類型文件欺騙木馬上傳。

5、隱蔽有上傳功能的文件,通過服務器權限的安全設置,防止黑客看到系統文件目錄和名稱,并給為有上傳功能的程序文件起沒有任何含義的文件名稱,讓入侵者無法猜出上傳文件的名稱和后臺管理路徑。

1.8建立網站(軟件)系統文件對照表

一個成熟穩定的網站系統,所有核心系統文件的數量和文件大小應該固定不變的。通過建立系統后臺文件對照表的方式,可以很容易的發現網站系統文件中是否出現被攻擊的問題。

發布時間:2014/4/29 點擊:21477 來源:本站原創
怎么看比特币走势 南粤36选7几点开奖 安徽11选5前3直选遗漏 陕西快乐10分选号交流 老奇人两码中特期期中 新11选5技巧 丰尚彩票官方网站-点击登陆 福彩3d阿福图库 世界网球冠军 一分赛车9码滚雪球计划 网上那个彩票平台可靠有人带 博格体育网-体育赛事资讯网站 鸿彩彩票官方网站-点击登陆 爱拼才会赢两码中特 急速赛车微信群平台 ds真人作假 安徽快3几点开始销售