日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

安全手册(初稿)[转]

發布時間:2023/12/31 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安全手册(初稿)[转] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

安全手冊(初稿)

目錄

一、????輸入驗證????3

1.????什么是輸入????3

2.????輸入驗證的必要性????3

3.????輸入驗證技術????3

3.1 主要防御方式????3

3.2 輔助防御方式:????4

二、????輸出編碼????6

1.????輸出的種類????6

2.????輸出編碼的必要性????6

3.????輸出編碼????6

4.????常用測試輸出方法????8

三、????防止SQL注入????10

1.????什么是SQL注入????10

2.????SQL注入的種類????10

3.????如何防止SQL注入????10

3.1 SQL注入產生的原因:????10

3.2主要防御方式:????10

3.3 輔助防御方式????12

四、????跨站腳本攻擊????14

1.????什么是跨站腳本攻擊????14

2.????跨站腳本攻擊的危害????14

3.????如何防止跨站腳本攻擊????14

3.1????主要防御方式????14

3.2????輔助防御方式????15

4.XSS漏洞另一個攻擊趨勢????15

五、????跨站請求偽造????17

1.????什么是跨站請求偽造????17

2.????跨站請求偽造的危害????17

3.????如何防止跨站請求偽造????17

3.1主要防御方式:????17

3.2輔助防御方式:????18

六、????越權操作????19

1.????什么是越權操作????19

2.????越權操作的危害????19

3.????如何防止越權操作????19

七、????IO操作安全????20

八、????系統加密????21

1. 主要防御方式????21

九、????信息泄露????23

十、????日志和監測????24

?

?

?

一、?輸入驗證
1.?什么是輸入
???? 輸入是編譯時以外的全部數據交換。WEB應用程序從各種來源獲取輸入,例如所有用戶發送的,或者應用程序運行的往返數據(用戶提交的數據、視圖狀態、cookie、查詢字符串參數等),以及后臺數據(數據庫、配置數據和其他數據來源)。所有輸入的數據都會在某種情況下影響請求的處理。[1]

?

2.?輸入驗證的必要性
???? 為什么輸入驗證如此重要?第一個原因非常明顯:用戶都不希望使用虛假的數據。應用程序會處理這些數據,根據它們得出結果,并最終存儲到后臺數據存儲中。網絡上的其他應用程序有可能在某種情況下需要這些數據,這些程序可能依賴于數據的正確性。(如果這些數據沒有經過驗證,就有可能會帶來麻煩。)[1]
一切從外部獲取的數據都可能是惡意的,如果缺少對數據的驗證,將會帶來很多安全問題。如EMAIL 驗證、用戶名驗證等。如:缺少對EMAIL的長度驗證,在存儲EMAIL時將出現數據庫溢出錯誤。缺少對EMAIL的格式驗證,在發送郵件時將會給程序帶來錯誤等。

?

3.?輸入驗證技術

3.1 主要防御方式
防御手段一:驗證控件驗證
保護級別:★★★★☆
描述:
???? 對于表現層, 可以利用驗證控件,對用戶輸入的數據進行類型、大小、范圍的驗證。
驗證控件必須做到在客戶端和服務端同時驗證,客戶端的驗證可以減輕對服務端請求的次數和用戶操作的方便性。服務端驗證確保數據的正確性,同時也防止用戶偽造請求繞過客戶端的驗證。
優點:驗證簡單有效,可重復使用,通常應用于客戶端驗證較多。
缺點:驗證不完整,有些驗證用戶可以繞過。

?

防御手段二:數據層驗證
保護級別:★★★★☆
描述:
????? 關鍵的地方(涉及到點數、金錢、權限)根據情況還需要在業務層或者數據訪問層進行驗證,以保證數據的合法性。在服務端的驗證可以用到數據驗證類: DataValidator 里的相關函數。如:IsNumber(數字)、IsIP(IP驗證)、IsEmail(郵箱格式驗證)等。
對于HTML代碼輸入的地方,輸入時一定要進行HTML格式化處理,否則有可能會引起全局顯示錯誤。如輸入:<!-- (html注釋代碼)等。
優點:驗證的最后防線,確保數據正確。

?

防御手段三: 黑名單
保護級別:★★★
描述:
???? 黑名單是看來最簡單的途徑,不過同時也是最不可靠(有可能讓用戶繞過)。但在一些地方也是能起到作用的。如:過濾系統標簽的輸入,先將數據庫中所有系統標簽轉換成別的代替符,標簽解釋完成后再轉換成原字符。系統的過濾函數RemoveXSS也是黑名單的一種利用。適當利用黑名單驗證可以直接過濾掉大部份惡意代碼。
優點:應用簡單,快捷。
缺點:不完全可靠,忘記驗證的幾率高。
??????

防御手段四:白名單
保護級別:★★★★★
描述:
????? 白名單是開發人員定義的合法條件集合,集合以外的任何情況都被視為非法。白名單可能是允許的字符集合,合法文件名稱列表,或者只是可以接受的數據類型列表。它與黑名單完全相反。由于它把忘記驗證的幾率降到最小,而且更容易實現,擴展性更強,所以白名單更加強大。開發人員在驗證數據時應該始終使用白名單方法。
SF中白名單的應用有(只列出部份)
??? 數據類型轉換:DataConverter 類 CDate CLng 等。
??? 允許上傳文件類型:m_FileExtArr = "gif|png|jpeg|jpg|gif|bmp|fla|swf";
????允許使用個別js:AllowString.xml 名件中的白名單
????允許文件接收參數類型:QueryStrings.config
優點:可靠性高,擴展性強。
缺點:應用范圍較小,通常應用于內容確定的地方。


3.2 輔助防御方式:
???? 除了使用上述技術驗證輸入外,還可以使用以下防御方式確保輸入的正確性。
防御手段一:過濾技術
保護級別:★★★★
描述:
???? 過濾技術是通過特定過濾函數,把不允許的數據內容過濾掉,這種方法能確保數據的正確性,但同時也存在一些過濾不嚴和過濾太嚴的問題,總體來說,這也算是增強系統安全性的一種很有用的方法。如:FilterBadChar 函數、FilterSqlKeyword 函數 、RemoveXss 函數等應用。
優點:應用范圍較廣,有一定可靠性。
缺點:函數設計考濾煩多,容易忘記需要過濾的內容。
????
防御手段二:強制轉換技術
保護級別:★★★★
描述:
?????除了過濾外,有時也需要強制轉換,以確保數據正確和程序的正確運行。如數據層中的強制轉換就是一個很好的例子,程序運行到數據層,如果沒有對數據進行強制轉換,程序的出錯將暴出系統錯誤信息或系統的其他機密信息,更重要的是沒有了友好的錯誤提示。如:ToNumber 函數、ToValidId 函數、CLng函數等。
優點:是系統輸入的最后一道防線,比較安全。
缺點:容晚轉換出錯,要帶出錯處理過程。

?

防御手段三:輸出編碼
保護級別:★★★
描述:
????輸出編碼也是一種有效的防止HTML注入(XSS攻擊等)的解決方案,具體技術下一章詳細說明。
優點:實現簡單有效。
缺點:只針對特定輸出。

?

二、?輸出編碼
1.?輸出的種類

???輸出編碼是轉換輸入數據為輸出格式的過程序,輸出格式不包含,或者只是有選擇性的包含允許的特殊字符。
?? 輸出的種類有:
?????1)支持HTML代碼的輸出
?????2)不支技HTML代碼的輸出
?????3)URL的輸出
?????4)頁面內容的輸出(Keywords、Description等)
?????5)js腳本的輸出
?????6)style樣式的輸出
?????7)xml數據的輸出
?????8)服務控件的輸出

?

2.?輸出編碼的必要性
???????? 輸出編碼能有效地防止HTML注入(跨站腳本XSS攻擊)等,也能確保輸出內容的完整性和正確性。

?

3.?輸出編碼
防御手段一:過濾
保護級別:★★★☆
描述:
?????對于支持HTML代碼的輸出,輸出前要確保代碼中不含有跨站攻擊腳本才能輸出。目前而言,主要采用函數RemoveXss進行處理,由于RemoveXss并非十分完善,有待更好的過濾方案。但函數能防止目前主流的XSS攻擊。所以在支持HTML代碼的輸出,一定要通過這個函數進行過濾(也可以輸入到數據庫前過濾)。
優點:支持HTML,有交防止主流XSS攻擊。
缺點:有可能出錯,函數設計難度大。


防御手段二:HTML編碼
保護級別:★★★★★
描述:
?????對于不支持HTML的輸出,在輸出到頁面前要進行HtmlEncode編碼,部分服務器控件或者XSLT轉換本身就支持HtmlEncode編碼,可不必進行重復編碼。
優點:非常可靠。
缺點:不支持HTML輸出。


防御手段三:URL編碼
保護級別:★★★★★
描述:
????? 對于URL的輸出,要對輸出URL進行Server.UrlEncode處理。
???? 如:<img src="輸出內容" border="0" alt="logo" /> 的輸出
???? 要確保輸出內容的url編碼正確,不允許“ “ “ 的輸出。
優點:可靠性高。
缺點:應用范圍少。

????

防御手段四:轉換特殊符號的編碼形式
保護級別:★★★★★
描述:
???? 對于頁面內容的輸出,要確保輸出的正確性和允許輸出的數據。
???? 如:頁面 <meta content="輸出內容" name="Keywords" /> 的輸出。
要確保輸出內容中不包含特殊符號:“ “ “ 輸出前要轉換特殊符號的編碼形式,將“ “ “ 轉為 &quot; 同樣的輸出有 title="" 的輸出等。

對于js腳本的輸出,要確保輸出代碼中不包含跨站腳本,注意“‘ ”和“”“的輸出,以免被組合成危險的js代碼。
如:圖片模塊,圖片地址的輸出。

對于style樣式的輸出,要確保樣式的正確性,目前系統主要應用到標題顏色的輸出,如果增加其他樣式的輸出,要確保樣式的安全性才能輸出。

對于xml數據的輸出,要確保數據中是否有XML不允許的字符,要對特殊字符進行轉換才能輸出。目前系統中還存在一些地方存在這樣的問題。

如:標簽的數據源,輸出時沒有對特殊符號進行處理,造成輸出出錯。留言標題中出現“<” 等。
?
?????

優點:防止因殊符號而出現錯誤,或跨站。
缺點:檢查難度大。

????

防御手段五:其他要注意的地方
保護級別:★★★★
描述:
???? 對于服務器控件的輸出,要注意輸出的環境,對于不同的輸出環境進行不同的處理,如url編碼,html編碼等。
除上述輸出外,還有一些特殊的輸出形式,應盡量避免使用,或者處理編碼后再使用。如:

?

Response.Write(name.Text);
Response.Write(Request.Form["name"]);
QueryString? Response.Write(Request.QueryString["name"]);
Cookies?Response.Write(?
Request.Cookies["name"].Values["name"]);
直接輸出?<%=myVariable %>


4.?常用測試輸出方法
?? 常用的測試輸出語句有:
?????<script>alert('hello');</script>。
?????1.jpg" οnmοuseοver="alert('xss')
?????"></a><script>alert(‘xss’);</script>
?????http://xxx';alert('xss');var/ a='a
?????‘”>xss&<
?????對輸出數據到輸出數據的對比,看是否出現問題。

三、?防止SQL注入
1.?什么是SQL注入
?????所謂SQL注入,就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。通過遞交參數構造巧妙的SQL語句,從而成功獲取想要的數據。

?

2.?SQL注入的種類
???? 從具體而言,SQL注入可分為五大類,分別是:數字型注入、字符型注入、搜索型注入(like)、in型的注入、句語連接型注入。
???? 從應用來說,要特別注意IP、搜索、批量刪除、從數據庫轉到數據庫等地方的SQL注入。

?

3.?如何防止SQL注入
3.1 SQL注入產生的原因:
???? 看下面檢查登陸的SQL語句:
?????SqlCommand cmd = new SqlCommand("SELECT * FROM PE_USERS WHERE UserName = '"
??????????????? + UserName + "' AND UserPassword = '" + PassWord + "'", conn);
?????由于沒有對UserName和PassWord進行任何驗證,如果UserName=” admin’ OR 1=1--“
?????所執行的SQL語句就成了:
?????SELECT * FROM PE_USERS WHERE UserName=’admin’ OR 1=1—‘ AND UserPassword=’’
?????這就造成了SQL注入,條件永遠為真,也就不用密碼也能登陸成功。

?

3.2主要防御方式:

防御手段一:參數化查詢
保護級別:★★★★★
描述:
????? 使用參數化查詢的好處:可以防止sql注入式攻擊,提高程序執行效率。
?????例如:
??????????const string strSql = "SELECT * FROM [PE_Users] WHERE UserName = @UserName";
???????????Parameters parms = new Parameters("@UserName", DbType.String, userName);
?????中有一個參數@UserName, 使用Prarmeter對象,通過它把參數添加到Command對象上,這樣就獲得參數化查詢。
?????如上述語句,ADO.NET 會向SQL Server 發送下面的SQL語句:
?????Exec sp_executesql N ‘select * from [pe_users] where username=@username ‘,N ‘@username nvarchar(20) ‘,@username=N ‘name’
?????SQL Server 把@username 替換成字符串”name”,然后再執行查詢.
?????假設有下面的輸入:
?????‘ union select @@version,null,null—

?????生成的SQL語句如下所示:
?????Exec sp_executesql N ‘select * from [pe_users] where username=@username ‘,N ‘@username nvarchar(20) ‘,@username=N ‘’’ union select @@version,null,null--’
?????可以看到ADO.NET轉義了輸入。
?????public SqlParameter Add(string parameterName, SqlDbType sqlDbType, int size);
?????DbTye或SqlDbType可以是多種數據類型。
?

?????可根據你的數據類型來選擇。
?????在某些地方,也可似指定參數的長度:int size。這樣也能有效防止數據庫溢出和SQL注入的可能性。
優點:有效地防止了SQL注入的產生。
缺點:有些地方不能應用,如 in 。

?

防御手段二:過濾與轉換
保護級別:★★★★
描述:
?????對于數據型要強制轉換成數字Clng,對于字符型,要通過函數過濾。如:
?????private string SafeSqlLiteral(string inputSQL)
?????{
???????return inputSQL.Replace("'", "''");
?????}
?????對于搜索的地方LIKE 子句,要注意,如果要使用 LIKE 子句,還必須對通配符字符進行轉義:
?????s = s.Replace("[", "[[]");
?????s = s.Replace("%", "[%]");
?????s = s.Replace("_", "[_]");
???? 對于in類型,要轉換成規格的數字串或字符串:
???? ToValidId 函數
???? UserNamefilter 函數
???? 要盡量少用語句連接形式寫SQL語句,要用到的地方要確保連接語句的安全性,或在白名單內,或限制很短的長度,以防止SQL語句構造的危險。
優點:有效地防止了SQL注入,實現簡單。
缺點:容易遺漏,對于某些地方還是不能過濾,如 order by + 變量

?

防御手段三:白名單
保護級別:★★★★
描述:
???? 對于一些已知的參數范圍,可用白名單的形式處理,能有交防止SQL注入和查詢出錯,如:order by +列名,列名以參數形式傳入時,可制定一個白名單,先判斷一下參數是否在白名單內,再進行查詢,否則出錯處理。
優點:安全可靠
缺點:應用范圍小.

?

3.3 輔助防御方式
防御手段一:嚴格過濾
保護級別:★★★☆
描述:
????? 對于不能參數化查詢或者無法限制變量類型和范圍的情況,使用過濾的手段
?????DataSecurity.FilterBadChar來過濾。
?????對于數據庫中讀取的數量要進入查詢語句,在不確定數據是否安全的情況下,要對其進入過濾。這種SQL注入比較隱蔽,所以要特別注意。
優點:能用于不能參數化而又難過濾的地方,如 order by +變量
缺點: 過濾過于嚴格。

?

防御手段二:限定URL傳遞參數的數據類型和范圍
保護級別:★★★
描述:
???? 限定URL的傳遞參數類型、數量、范圍等來防止通過構造URL進行惡意攻擊。需要在Config\QueryStrings.config配置文件中增加相應的配置項。參見MSDN雜志
優點:在一定的程序上有效地防止通過URL方式的注入。
缺點:容易遺忘正常需要的參數。

?

防御手段三:全局過濾SQL關鍵字過濾
保護級別:★★★
描述:
???? 在某些地方進行全局過濾SQL關鍵字過濾 FilterSqlKeyword,如對標簽的解釋。(可能存在過濾不完全和限制程序開發的問題)
優點:能用于不能參數化而又難過濾的地方,如 table的連接。
缺點: 過濾過于嚴格。

更多關于SQL注入,可參考這篇文章:
http://www.microsoft.com/taiwan/msdn/columns/huang_jhong_cheng/LVSS.htm??

?

?

四、?跨站腳本攻擊
1.?什么是跨站腳本攻擊
????? 跨站腳本攻擊(通常簡寫為XSS)是指攻擊者利用網站程序對用戶輸入過濾不足,輸入可以顯示在頁面上對其他用戶造成影響的HTML代碼,從而盜取用戶資料、利用用戶身份進行某種動作或者對訪問者進行病毒侵害的一種攻擊方式。

?

2.?跨站腳本攻擊的危害
????? 入侵者便通過技術手段在某個頁面里插入一個惡意HTML代碼,例如記錄論壇保存的用戶信息(Cookie),由于Cookie保存了完整的用戶名和密碼資料,用戶就會遭受安全損失。如這句簡單的Java腳本就能輕易獲取用戶信息:alert(document.cookie),它會彈出一個包含用戶信息的消息框。入侵者運用腳本就能把用戶信息發送到他們自己的記錄頁面中,稍做分析便獲取了用戶的敏感信息。
????? 跨站腳本攻擊的危險,在如今WEB安全越來越得到重視,他的危險性也越來越大。有效防止跨站腳本攻擊,是WEB程序是否安全的一個重要標準。

?

3.?如何防止跨站腳本攻擊

3.1?主要防御方式
防御手段一:編碼輸出
保護級別:★★★★★
描述:
????? 對于不支持HTML代碼的地方,可用編碼輸出。如:HtmlEncode、Server.UrlEncode等方法編碼輸出。
優點:安全可靠。
缺點:不支持HTML代碼。
??????
防御手段二:使用UBB編碼
保護級別:★★★★
描述:
??????UBB代碼是HTML的一個變種,是Ultimate Bulletin Board (國外的一個BBS程序)采用的一種特殊的TAG。它能有效的限制HTML代碼的使用,增強系統輸出的安全性。
優點是:簡單,容易實現,利用白名單形式,易于控制。
缺點是:只支持小量特定html代碼,編輯器功能小。

?

3.2?輔助防御方式
防御手段一: iframe security="restricted"
保護級別:★★★★
描述:
?????通過設置iframe security="restricted",能有效防止iframe類的攻擊(對IE有效).
優點:有效防止iframe的攻擊。

?

防御手段二: HttpOnly
保護級別:★★★★
描述:
?????設置Cookie的HttpOnly屬性,有效地防止Cookie通過腳本泄密(IE6 SP1以上、Firefox 3)。
優點:有效保護了用戶Cookie信息。

?

防御手段三: 字符過濾
保護級別:★★★★
描述:
???? 通過RemoveXss函數進行過濾,能有效防止常見腳站腳本的跨站攻擊。主要過濾常見惡意腳本代碼,

?? 如:
?????<applet|meta|xml|blink|link|style|script|embed|object|iframe|frame|frameset|ilayer|layer|bgsound|title|base>
?????OnX事件代碼、Javascript、Vbscript和Style中的expression、behaviour、script、position等。
?????但過濾可能存在不完全的情況。建立自己的XSS攻擊庫,方便測試和收集新的攻擊方式,使過濾函數更加完善。

???? xss攻擊庫http://ha.ckers.org/xss.html
優點:支持HTML,有效防止大部份攻擊代碼。
缺點:可能存在過濾不全的情況。

?

4.XSS漏洞另一個攻擊趨勢
?????1)攻擊的本質:
?????實際上這是一小段JAVASCRIPT,我們只是通過漏洞把這段JS感染到每一個用戶的瀏覽器,但是他不再受系統的限制,任何一個有漏洞的瀏覽器訪問了類似頁面都會受到攻擊。

?????2)傳播的途徑:
?????從傳播方式上來說它和傳統的網頁木馬攻擊方式沒有區別,由于這種攻擊對于HTTP請求包括AJAX都沒有域的限制,能使用瀏覽器本地保存的COOKIE,所以可以劫持用戶所有WEB應用的身份,它完全能夠讓已感染主機配合任何網站的應用做蠕蟲式的傳播。

?????3)攻擊的危害:
?????我們可以像傳統的僵尸網絡一樣控制大量的瀏覽器肉雞,控制瀏覽器做任意的訪問行為和動作。同時也能針對單個用戶做滲透攻擊,劫持他所有WEB應用的身份,讀取運行本地的任意敏感文件。

?????4)攻擊的展望:
?????當Active X等溢出漏洞不再風光的時候,以后利用XSS漏洞針對瀏覽器進行劫持攻擊將是一個大的趨勢。
???? 跨站腳本攻擊,在web2.0時代的現在,越發體現出他的危險性,軟件的漏洞加速了xss攻擊的危險和加劇了這樣攻擊的利用。瀏覽器的漏洞也成為了現今熱門的話題:
?????更多關于XSS攻擊的文章請看:
?????http://www.80sec.com/
?????http://huaidan.org/

?

五、?跨站請求偽造
1.?什么是跨站請求偽造

?????CSRF(Cross-site request forgery跨站請求偽造,也被稱成為“one click attack”或者session riding,通常縮寫為CSRF或者XSRF,是一種對網站的惡意利用。盡管聽起來像跨站腳本(XSS),但它與XSS非常不同,并且攻擊方式幾乎相左。XSS利用站點內的信任用戶,而CSRF則通過偽裝來自受信任用戶的請求來利用受信任的網站。與XSS攻擊相比,CSRF攻擊往往不大流行(因此對其進行防范的資源也相當稀少)和難以防范,所以被認為比XSS更具危險性。

?

2.?跨站請求偽造的危害
?????不要低估了CSRF危害性和攻擊能力!可以說,跨站請求偽造是跨站腳本攻擊的一種深入利用,它的危害性更大。如:給自己提升權限,增加管理員等。可以通過網上的一個案例說明這種攻擊的危害:
?????Bob在自己的電腦上剛剛查看完自己的銀行A賬戶余額,然后比較無聊就跑到一個公開的BBS上灌水,當他看到一篇“銀行A的內部照片”的帖子,很有興趣的打開這個帖子想看看自己信任的銀行A的內部圖片是啥樣子的,殊不知,這其實是一個attacker精心設計的騙局。在這個帖子中確實有幾個圖片,看上去真的像是銀行A的照片,但是其中有個圖片沒顯示出來,Bob以為是自己網速太慢,導致這個圖片沒有加載進來,也沒在意。只是對這些并不是十分滿意的照片搖搖頭,就關了這個帖子。幾天后,Bob猛然發現自己在銀行A的賬戶上少了1000元,到底是怎么了?
設想一下,Alice編寫了一個在Bob的銀行站點上進行取款的form提交的鏈接,并將此鏈接作為圖片tag。如果Bob的銀行在cookie中保存他的授權信息,并且此cookie沒有過期,那么當Bob的瀏覽器嘗試裝載圖片時將提交這個取款form和他的cookie,這樣在沒經Bob同意的情況下便授權了這次事務。

?

3.?如何防止跨站請求偽造

3.1主要防御方式:
防御手段一:ViewStateUserKey(對應Post方式)
保護級別:★★★★

描述:
?????ViewStateUserKey 是 Page 類的一個字符串屬性,設置Page.ViewStateUserKey 屬性,防止出現跨站請求偽造攻擊。如果攻擊者使用視圖狀態創建預先填充的 Web 頁(.htm 或 .aspx),則發生跨站請求偽造攻擊。視圖狀態可根據攻擊者先前創建的頁面生成。例如,包含 100 種商品的購物車頁面。攻擊者可引誘信任用戶瀏覽該頁,然后將該頁發送至視圖狀態有效的服務器。服務器不知道該視圖狀態是由攻擊者生成的。由于視圖狀態的有效性,再加上頁面在用戶安全上下文中執行,因此視圖狀態驗證和 MAC 無法對付這種攻擊。為 Page.ViewStateUserKey 屬性設置唯一適合的值,然后作為防止跨站請求偽造攻擊的對策。對于每個用戶而言,這個值必須唯一。通常,它是用戶名或標識符。當攻擊者創建視圖狀態時,為所有用戶將 ViewStateUserKey 設置為常量字符串,相當于將它保留為空。您必須將它設置為對各個用戶都不同的值 — 用戶 ID,會話 ID 更好些。由于一些技術和社會原因,會話 ID 更為合適,因為會話 ID 不可預測,會超時失效,并且對于每個用戶都是不同的。當用戶向服務器提交頁面時,便使用攻擊者的用戶名對該頁進行初始化。因此,視圖狀態 MAC 檢查將失敗,同時出現異常狀況。

優點:有效防止POST方式的跨站請求偽造。


防御手段二:追加安全驗證碼(對應Get方式)
保護級別:★★★★
描述:
???? 通過對鏈接追加安全驗證碼(HMACSHA1)防止跨站請求偽造。通過將正常請求的頁面+私鑰+用戶SessionID進行哈希加密,通過URL傳遞到操作頁面,保證來訪頁面是指定用戶通過指定操作鏈接來的,從而防止了請求偽造,增加了安全性。
優點:有效防止GET方式的跨站請求偽造。

?

3.2輔助防御方式:
防御手段一:驗證直接地址鏈接和外站鏈接
保護級別:★★★
描述:
?????禁止通過地址欄直接訪問或者通過外部鏈接訪問后臺管理頁面。可以通過Security.config? 的noCheckUrlReferrer 配置,設定可以直接訪問的頁面。新增功能或者新增頁面需要根據情況配置Config\Security.config文件。
優點:簡單的防止用戶直接對頁面請求造成的管理操作。
缺點:不完全安全,以另一種方式可達到目的。

?

六、?越權操作
1.?什么是越權操作
?????越權操作是指對系統進行超越自己權限的操作。每種會員用戶都有設置自己特定的權限,如果操作越出了自己權限范圍,就是越權操作。

?

2.?越權操作的危害
?????越權操作危害性視越權情況而定,如查看收費文章,修改別人的文章,刪除系統的文章資料等操作,有一定的危害性。

?

3.?如何防止越權操作
?????對于涉及到用戶和管理員的操作,首先必須檢查操作的合法性。對于合法的操作,還需要檢查操作的數據是否是屬于操作者本人。特別對會員的自身操作,如刪除自己的文章等操作,要檢查數據是否屬于操作者本人。操作時對身份的驗證一定要引用系統服務端的,不要用用戶可修改的數據進行驗證。如:隱藏的TextBox,Label,Cookie等。

?

七、?IO操作安全
?????對上傳文件的實際類型進行檢查,并刪除黑名單中列出類型的文件。上傳采用白名單驗證,確保上傳文件類型的正確性,也防止上傳系統可執行文件,對系統造成危險。如:asp,aspx,php等木馬程序。所有的IO操作都要進行權限判斷、類型檢查,避免惡意用戶上傳木馬文件或者刪除、篡改系統文件。特別對于模板操作,文件夾的建立,建立前檢查文件夾名和文件名是否合法,注意建立這樣 asp.asp 的文件夾(win2003文件夾漏洞)。文件下載頻道要注意下載文件類型的檢查,防止輸入“\..\web.config ”形式的地址,以下載本站源文件。

?

?

八、?系統加密
?????系統的信息加密對系統的安全性非常重要,做好系統的加密工作,有利于確保整個系統的安全。


1. 主要防御方式
防御手段一:完善加密體系
保護級別:★★★★
描述:
???? 一個完善的加密體系,有利于確保密碼的安全性和信息的完整性。
用戶密碼可用哈希加密或采用混合方式加密,檢查密碼強度,記錄密碼更新頻率并進行提示。重要的帳號登錄處需要設置驗證碼以防止暴力破解,并且密碼要定期更新。
結合數據完整性驗證,使得用戶密碼只能在特定程序中才有效。這樣能有效地防止非法手段更改用戶密碼,有完善的加密程序和數據完整性檢查,即使被得到數據庫操作權限也不能得到應用程序的管理權限。
優點:有效確保用戶信息的安全。
缺點:增加密碼管理的難度。

?

防御手段二:連接字符串加密
保護級別:★★★
描述:
?????可對連接字符串進行加密(加密文件ConnectionStrings.config),防此用戶非法得到數據庫連接密碼。
優點:能簡單保護數據庫。

?

防御手段三:密碼保存位置不同
保護級別:★★★★
描述:
???? 對于重要的系統入口,可有多個密碼,如:管理員密碼,管理認證碼。分別把他們放在不同地方:數據庫與文件中。大大增強系統的安全性。
優點:多重密碼保護系統。

?

防御手段四:保護ViewState
保護級別:★★★
描述:
?????對重要的視圖數據進行加密處理,默認情況下,視圖狀態是以明文傳輸的,而且有可能暴露信息。使用類似于ViewState Decoder(http://www.pluralsight.com/)的工具,就能重新解碼域的值。所以重要數據最好不要保存到ViewState里,或加密處理。

?

防御手段五:強命名加密程序集
保護級別:★★★★
描述:
???? 使用強名稱對程序集進行簽名將向包含程序集清單的文件添加公鑰加密。強名稱簽名幫助驗證名稱的唯一性,避免名稱欺騙。強命名程序集可以防止程序集被篡改,強命名的程序集可以部署到GAC(Global Assembly Cache)中,共享多個版本的程序集。

?

九、?信息泄露
?????如果攻擊者通過探測 Web 頁來找尋引起異常的各種情況,則出現信息泄漏攻擊。對于攻擊者而言,這是一種頗有成效的攻擊方法。因為異常細節信息常以 HTML 的形式返回并顯示在瀏覽器中。這可能會泄漏很有用的信息,如堆棧跟蹤。堆棧跟蹤包含數據庫連接字符串、數據庫名、數據庫方案信息、SQL 語句以及操作系統和平臺版本。

?

防御手段一:錯誤或異常信息處理
保護級別:★★★★
描述:
?????利用web.config中配置的自定義錯誤頁和全局的異常處理,屏蔽異常出現時暴露的敏感信息。捕獲系統的所有出現異常的地方,做到友好的錯誤提示信息,不要暴露敏感信息。
優點:友好提示,隱藏出錯信息。

?

防御手段二:安全入口盡量進行模糊提示
保護級別:★★★
描述:
??? 對于用戶登陸的地方,在驗證時盡量模糊提示。如:當登陸出錯時都一致提示(用戶名或密碼不正確!)能有效增加密碼暴破的難度。


防御手段三:動態表單(防ARP嗅探)
保護級別:★★★
描述:
?????網絡竊聽、ARP嗅探存在于網絡的任何地方,如何保護WEB程序,確保密碼不被捕獲或增加被捕獲的難度?考慮了常用ARP嗅探軟件的嗅探原理(軟件自動從用戶預先設置好的要獲取的表單字段信息,有選擇性地獲取與用戶名,密碼字段有關的數據包),如果采用動態表單,就增加了ARP嗅探軟件捕獲密碼的難度。
優點:簡單而有效地實現了防ARP嗅探。


十、?日志和監測
?????做好系統的日志監測,記錄好后臺管理操作和異常情況,有利于監測系統未知漏洞,通過操作日志,還能找出系統出錯或對某些重要操作的管理員、操作時間、IP等信息。有效地預防,檢測,增強系統的安全性。

?

?參考資料
[1].開發更安全的ASP.NET2.0應用程序,[美]Dominick Baier 著,華中宇 田亮君 陳文 譯.人民郵電出版社.2008.7
http://www.microsoft.com/taiwan/msdn/columns/huang_jhong_cheng/LVSS.htm
http://technet.microsoft.com/zh-cn/library/ms161953.aspx
http://www.microsoft.com/china/technet/security/guidance/secmod94.mspx
http://www.microsoft.com/china/technet/security/guidance/secmod83.mspx

轉載于:https://www.cnblogs.com/rex061403116/articles/1251345.html

總結

以上是生活随笔為你收集整理的安全手册(初稿)[转]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。