基于互聯(lián)網(wǎng)網(wǎng)站的安全開發(fā)規(guī)范_第1頁
基于互聯(lián)網(wǎng)網(wǎng)站的安全開發(fā)規(guī)范_第2頁
基于互聯(lián)網(wǎng)網(wǎng)站的安全開發(fā)規(guī)范_第3頁
基于互聯(lián)網(wǎng)網(wǎng)站的安全開發(fā)規(guī)范_第4頁
基于互聯(lián)網(wǎng)網(wǎng)站的安全開發(fā)規(guī)范_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、基于互聯(lián)網(wǎng)網(wǎng)站的安全開發(fā)規(guī)范主 要 內(nèi) 容1前言71.1目的71.2主要參考文檔72常見WEB安全威脅介紹72.1跨站腳本漏洞(XSS)9漏洞說明9漏洞危害10處理說明10示例112.2注入漏洞12漏洞說明12漏洞危害12處理說明12示例122.3HTTP消息頭注入13漏洞說明13漏洞危害13處理說明13示例132.4重定向漏洞14漏洞說明14漏洞危害15處理說明15示例152.5請求偽造(OSRF/CSRF)15漏洞說明15漏洞危害16處理說明16示例172.6文件上傳漏洞17漏洞說明17漏洞危害17處理說明17示例182.7不安全的直接對象引用18漏洞說明18漏洞危害18處理說明18示例1

2、82.8信息泄漏及不正確的錯誤操作19漏洞說明19漏洞危害19處理說明19示例192.9失效證證及會話管理20漏洞說明20漏洞危害20處理說明20示例212.10不安全的信息存儲及通信21漏洞說明21漏洞危害21處理說明21示例212.11限制URL訪問失效22漏洞說明22漏洞危害22處理說明22示例222.12特殊字符的HTML轉(zhuǎn)換22漏洞說明22漏洞危害22處理說明23示例232.13緩沖區(qū)溢出23漏洞說明23漏洞危害23處理說明23示例233安全開發(fā)規(guī)范233.1用戶登錄處理243.2會話安全243.3用戶輸入檢查及過濾253.4界面輸出273.5頁面重定向273.6錯誤信息處理273.

3、7對象訪問權(quán)限283.8上傳內(nèi)容檢查283.9敏感信息處理283.10密碼儲存及使用283.11數(shù)據(jù)庫執(zhí)行腳本293.12系統(tǒng)調(diào)用293.13WEB服務(wù)器配置29前言目的本文檔通過介紹目前Web應(yīng)用中的常見漏洞及危害,并收集相關(guān)的漏洞防范手段,旨在讓部門開發(fā)人員提高WEB應(yīng)用安全意識,并通過安全規(guī)范,明確開發(fā)人員編碼的基本安全要求,提高WEB應(yīng)用系統(tǒng)的安全性。另外,現(xiàn)在的網(wǎng)絡(luò)攻擊技術(shù)新、變化快,本規(guī)范需要部門全體人員不斷的補充、完善。同時,安全開發(fā)規(guī)范中涉及的要求,也作為測試的一個內(nèi)容及依據(jù)。主要參考文檔黑客攻防技術(shù)寶典web實戰(zhàn)篇常見WEB安全威脅介紹常見的對于WEB應(yīng)用的威脅有以下幾種:W

4、eb應(yīng)用安全威脅種類威脅實施途徑導(dǎo)致結(jié)果Code Scanning (Server/Client)源代碼掃描(服務(wù)端/客戶端)Browsing source code瀏覽源代碼Learn Vulnerabilities收集信息,了解目標(biāo)弱點Cookie PoisoningCookie 中毒Changing cookie content改變cookie內(nèi)容User Impersonation扮演成為其他用戶身份Hidden Manipulation隱藏域值篡改Changing hidden HTML fields value 改變HTML隱藏域值eShoplifting 電子商品偷竊Forcef

5、ul Site Browsing強行瀏覽Use URL address line使用URL地址行Access sensitive data訪問敏感數(shù)據(jù)Third Party Misconfigurations第三方誤配置Default or improper software configuration 缺省或者不正確的軟件配置Access OS or data訪問OS或者數(shù)據(jù)Identified(Known) Vulnerabilities已知漏洞Published vendor bugs已公布的廠商軟件漏洞Access OS,Crash server/app/DB,access sensi

6、tive data訪問OS或者敏感數(shù)據(jù),甚至搗毀服務(wù)器/應(yīng)用程序/數(shù)據(jù)庫Buffer Overflow緩沖區(qū)溢出Overflow field input 溢出輸入域Access sensitive data,Or crash site/application訪問敏感數(shù)據(jù)或者搗毀站點/應(yīng)用程序Debug Options&Backdoors調(diào)試選項&后門程序Change code setting改變通用代碼設(shè)置Access code/application asDeveloper or admin以開發(fā)者或者管理員身份訪問代碼/應(yīng)用程序Parameter Tampering

7、0;Server/Client參數(shù)篡改(服務(wù)端/客戶端)Removal or alteration ofexpected parameter fields更改處理程序所期望得到的參數(shù)域值A(chǔ)ccess OS or sensitive data訪問OS或者敏感數(shù)據(jù)Stealth Commanding隱蔽指令執(zhí)行Use Meta code使用命令夾帶/附加執(zhí)行模式Access Os or control Application at OS level訪問OS或者在OS級別控制應(yīng)用程序Cross Site Scripting跨站腳本Use URL Meta code to insert Trojan

8、code 利用URL夾帶/附加執(zhí)行腳本模式嵌入特羅伊代碼Server-side exploitation,Access sensitive data訪問服務(wù)端敏感數(shù)據(jù)或者威脅客戶本地安全Application DoS應(yīng)用層拒絕服務(wù)Invalid data input不可法數(shù)據(jù)輸入Crash server/application搗毀服務(wù)器/應(yīng)用程序跨站腳本漏洞(XSS)漏洞說明XSS又叫CSS  (Cross Site Script) ,跨站腳本攻擊,指當(dāng)應(yīng)用程序提取用戶提供的數(shù)據(jù)并發(fā)送到Web瀏覽器,數(shù)據(jù)內(nèi)容沒有先經(jīng)過驗證或編碼時(如:在require的輸入?yún)?shù)中增加javascri

9、pt腳本、HTML代碼),當(dāng)用戶瀏覽該頁之時,嵌入其中Web里面的html代碼會被執(zhí)行,從而達到惡意用戶的特殊目的。XSS允許攻擊者在受害者的瀏覽器上執(zhí)行腳本,腳本可能會劫持用戶會話、破壞Web站點或引入蠕蟲等。XSS屬于被動式的攻擊,因為其被動且不好利用,所以許多人常呼略其危害性。跨站腳本漏洞的種類、方式也有多種如反射型、保存型、鏈接型等,跨站腳本也是目前最普遍的Web漏洞。漏洞危害雖然此漏洞不會直接影響WEB網(wǎng)站,但攻擊者通常會在有漏洞的程序中插入 JavaScript、VBScript、 ActiveX或Flash以欺騙用戶可通過惡意欺騙/釣魚攻擊模式誘導(dǎo)正常用戶訪問惡意URL實現(xiàn)盜取/

10、污染cookie、Xss蠕蟲/掛償償馬、盜取用戶帳戶、修改用戶設(shè)置、做虛假廣告等,攻擊步驟:HTML注入,劫持用戶的瀏覽器,如:注入一個JavaScript彈出式的警告框:a_lert(1);做壞事:如果您覺得警告框還不夠刺激,當(dāng)受害者點擊了一個被注入了HTML代碼的頁面鏈接時攻擊者能作的各種的惡意事情:如獲取用戶Cookie/Session等敏感信息、篡改用戶資料; 處理說明用戶可控制的數(shù)據(jù)未經(jīng)適當(dāng)確認(rèn)與凈化就被復(fù)制到應(yīng)用程序響應(yīng)中,這是造成漏洞的根本原因,因此需要對用戶輸入、輸出的請求數(shù)據(jù)進行過濾處理:對動態(tài)生成的頁面的字符進行編碼;驗證所有輸入數(shù)據(jù),有效檢測攻擊,某個數(shù)據(jù)被接受為可被顯示

11、或存儲之前,使用標(biāo)準(zhǔn)輸入驗證機制,驗證所有輸入數(shù)據(jù)的長度、類型、語法、敏感字符(% < > ; & + - " '( )并進行相應(yīng)的轉(zhuǎn)義等。如:在request輸入?yún)?shù)取出時通過過濾器或者各頁面先判斷參數(shù)中是否含有”<script”開頭的數(shù)據(jù),如果有,直接過濾掉或轉(zhuǎn)到錯誤頁面;但僅僅查找或替換一些字符(如"<" ">"或類似"script"的關(guān)鍵字),很容易被XSS變種攻擊繞過驗證機制。往往我們只在客戶端檢驗數(shù)據(jù)類型和有效性,但是非法用戶可以通過工具以post或get傳不符合規(guī)范

12、參數(shù)給我們指定的接受數(shù)據(jù)頁面或服務(wù),可能導(dǎo)致非法用戶把錯誤和無效的信息和數(shù)據(jù)寫入我們的數(shù)據(jù)庫,因此在客戶端校驗的基礎(chǔ)上還需要進行服務(wù)器端的數(shù)據(jù)校驗。對上傳文件名或上傳文件格式進行嚴(yán)格驗證、限制 對所有輸出數(shù)據(jù)進行適當(dāng)?shù)木幋a,以防止任何已成功注入的腳本在瀏覽器端運行。示例例1:POST: msg=%25E5%259B%25BE%25E5%25BD%25A2%25E9%25AA%258C%25E8%25AF%2581%25E7%25A0%2581%25E8%25BE%2593%25E5%2585%25A5%25E9%2594%2599%25E8%25AF%25AF.</textarea>

13、;<script>alert(55219)</script>例2:某論壇對上傳文件名沒有做嚴(yán)格的限制,可以用作為文件名上傳文件。這樣,黑客可以用腳本的形式上傳文件,其它用戶一旦瀏覽貼子,就會執(zhí)行其中的腳本文件。比如當(dāng)黑客用以下腳本作為文件名上傳到論壇:當(dāng)用戶瀏覽貼子時,用戶瀏覽器將自動執(zhí)行上的xss.js腳本。xss.js腳本可能是木馬或病毒文件,對用戶電腦中數(shù)據(jù)進行竊取或破壞。 注入漏洞漏洞說明注入漏洞,特別是SQL注入,就是通過將SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達攻擊者的惡意數(shù)據(jù)欺騙翻譯器執(zhí)行非用戶本意的命令或改變數(shù)據(jù)。致SQL注

14、入攻擊的漏洞并非系統(tǒng)造成的,主要是程序員在編程中忽略了安全因素,它的原理并不復(fù)雜,如:后臺數(shù)據(jù)庫允許動態(tài)SQL語句的執(zhí)行,前臺應(yīng)用程序沒有對用戶輸入的數(shù)據(jù)或者頁面提交的信息(如POST,GET)進行必要的安全檢查,就會造成SQL的注入威脅。漏洞危害非法查詢其它數(shù)據(jù)庫資源,獲得數(shù)據(jù)庫一些相關(guān)信息。處理說明盡量使用預(yù)編譯(prepareStatement)來執(zhí)行數(shù)據(jù)庫、設(shè)置參數(shù)值,并且SQL語句中不出現(xiàn)參數(shù)。示例如查詢頁面根據(jù)而后臺查詢語句是select * from 表名 where 字段 = XXXX盡量使用select * from 表名 where 字段 = ?或:param_name來預(yù)

15、編譯;否則非法用戶可以輸入 or 1=1來實現(xiàn)注入獲取信息。HTTP消息頭注入漏洞說明包括:注入cookie、傳送其它攻擊、HTTP響應(yīng)分割,如果用戶控制的數(shù)據(jù)以不安全的方式插入到應(yīng)用程序返回的HTTP消息頭中,就會出現(xiàn)HTTP消息頭注入漏洞。如果攻擊者能夠在他控制的消息頭中注入換行符(輸入?yún)?shù)中增加%0d%0a),他就能在響應(yīng)中插入其他HTTP消息頭,并在響應(yīng)主體中寫入任意內(nèi)容。漏洞危害可能會通過 Web 高速緩存投毒損壞站點內(nèi)容,可能會竊取或操縱客戶會話和 cookie,它們可能用于模仿合法用戶,從而使黑客能夠以該用戶身份查看或變更用戶記錄以及執(zhí)行事務(wù)。處理說明1)在require如果是g

16、et方式傳送參數(shù)的, 判斷getQueryString()返回數(shù)據(jù)中是否含有%0d或%0a; 如果有,直接過濾掉或轉(zhuǎn)到錯誤頁面2) 在require如果是post方式傳送參數(shù)的,在獲得數(shù)據(jù)后如果要根據(jù)require的參數(shù)重組一個url進行跳轉(zhuǎn)個面時先要將字符串用URLEncoder.encode()進行編碼。示例這種漏洞最常見于Location與Set-Cookie消息頭中,但也會出現(xiàn)在其他HTTP消息頭中。應(yīng)用程序提取用戶提交的輸入,并將它插入到響應(yīng)碼為3xx的Location消息頭中。同樣,一些應(yīng)用程序提取用戶提交的輸入,把它插入一個 cookie 值中。在上述任何一種情況下,攻擊者都可以

17、使用回車符(0x0d)或換行符(0x0a)構(gòu)造一個專門設(shè)計的請求,在他們控制的消息頭中注入一個換行符,從而在下面的行中注入其他數(shù)據(jù)。例:URL:參數(shù):staff_id, verify_code, password_code測試值:Foobar%3f%0d%0aAppScanHeader:%20AppScanValue%2f1%2e2%2d3%0d%0aSecondAppScanHeader:%20whatever以下更改已應(yīng)用到原始請求:重定向漏洞漏洞說明應(yīng)用程序提取用戶可控制的輸入,并使用這個數(shù)據(jù)執(zhí)行一個重定向,指示用戶的瀏覽器訪問一個不同于用戶要求的URL,那么就會造成重定向漏洞。漏洞危害

18、攻擊者主要利用重定向漏洞實施釣魚攻擊,誘使受害者訪問一個欺騙性Web站點并輸入敏感信息。處理說明絕不將用戶提交的數(shù)據(jù)合并到重定向目標(biāo)中是避免重定向漏洞的最有效方法;從應(yīng)用程序中刪除重定向頁面,用直接指向相關(guān)目標(biāo)URL的鏈接替代指向重定向頁面的鏈接;建立一個包含所有有效重定向URL的列表。不以參數(shù)的形式向重定向頁面?zhèn)魉湍繕?biāo) URL,相反,傳送這個列表的一個索引。重定向頁面應(yīng)在它的列表中查詢這個索引,并返回一個指向相關(guān)URL的重定向。應(yīng)用程序應(yīng)在所有重定向中使用相對 URL,重定向頁面應(yīng)嚴(yán)格確認(rèn)它收到的URL是一個相對URL。它應(yīng)當(dāng)確認(rèn):用戶提交的URL或者以單獨一個斜線字符、后接一個字母開頭,或

19、者以一個字母開頭,并且在第一個斜線前沒有冒號。應(yīng)拒絕而不是凈化任何其他輸入。示例一個常見的示例是,應(yīng)用程序強制會話已經(jīng)終止的用戶返回登錄頁面,然后在用戶重新成功通過驗證后將他們重定向到最初的URL。如果遇到這種行為,就表明應(yīng)用程序可能易于受到重定向攻擊,因此,應(yīng)當(dāng)對這種行為進行深入分析,以確定它是否可被攻擊者利用。請求偽造(OSRF/CSRF)漏洞說明這種類型的攻擊也稱為會話疊置與會話劫持攻擊密切相關(guān),在攻擊過程中,攻擊者截獲一名用戶的會話令牌,因而能夠"作為"該用戶使用應(yīng)用程序。但是,通過請求偽造,攻擊者根本不需要知道受害者的會話令牌而是利用Web瀏覽器的正常行為劫持一名

20、用戶的令牌,通過它提出用戶并不想提出的請求。 請求偽造漏洞分為兩種類型:本站點請求偽造與跨站點請求偽造。本站點請求偽造(on-site request forgery,OSRF)是一種利用保存型XSS漏洞的常見攻擊有效載荷。例如,在MySpace蠕蟲中,Samy 在自己的用戶資料中插入了一段腳本,致使任何查看它的用戶在不知情的情況下執(zhí)行各種操作。另外,即使在XSS漏洞并不存在的地方,保存型OSRF漏洞仍有可能存在,這一點常被人們忽視。CSRF是Cross Site Request Forgery的縮寫(也縮寫為XSRF),即跨站請求偽造,目前流行的 CSRF攻擊主要是由攻擊者在網(wǎng)頁中植入惡意代

21、碼或連接,當(dāng)受害人的瀏覽器執(zhí)行惡意代碼或者受害人點擊連接后,攻擊者就可以訪問那些被害人身份驗證后的網(wǎng)絡(luò)應(yīng)用。如果被害人采用多窗口瀏覽器,攻擊者就可以以被害人身份控制瀏覽器中任何一個窗口中的Web應(yīng)用。漏洞危害HTTP會話劫持,攻擊者強制受害者的瀏覽器執(zhí)行一個對攻擊者有利的惡意行為。一般網(wǎng)站是通過cookie來識別用戶的,當(dāng)用戶成功進行身份驗證之后瀏覽器就會得到一個標(biāo)識其身份的cookie,只要不關(guān)閉瀏覽器或者退出登錄,以后訪問這個網(wǎng)站會帶上這個cookie。如果這期間瀏覽器被人控制著請求了這個網(wǎng)站的url,可能就會執(zhí)行一些用戶不想做的功能(比如修改個人資料)。處理說明不要完全依賴于cookie

22、傳送會話令牌,就可以防止XSRF攻擊,如:電子銀行這些最為注意安全的應(yīng)用程序常常使用HTML表單中的隱藏字段傳送會話令牌。當(dāng)每次提交請求時,應(yīng)用程序除確認(rèn)會話 cookie 外,還核實表單是否傳送了正確的令牌;通過要求用戶完成幾個步驟、以執(zhí)行相關(guān)的敏感操作阻止 XSRF 攻擊的防御措施,應(yīng)用程序必須在多步驟處理過程中使用某種令牌且保證這個令牌的安全。如:在第一個階段,應(yīng)用程序在一個隱藏表單字段中放入一個令牌;在第二個階段,它確認(rèn)這個令牌是否被提交。由于XSRF攻擊是單向性的,因此實施攻擊的Web站點無法從第一個階段獲得令牌,然后在第二個階段提交。示例如:比如要攻擊一個存在問題的blog,那就先

23、去目標(biāo)blog留言,留下一個網(wǎng)址,誘其主人點擊過來,然后構(gòu)造個HTML表單提交些數(shù)據(jù)過去。這時對于多窗口瀏覽器(firefox、遨游、MyIE)便捷的同時也帶來了一些問題,因為多窗口瀏覽器新開的窗口是具有當(dāng)前所有會話的。即我用IE登陸了我的Blog,然后我想看新聞了,又運行一個IE進程,這個時候兩個IE窗口的會話是彼此獨立的,從看新聞的IE發(fā)送請求到Blog不會有我登錄的cookie;但是多窗口瀏覽器永遠(yuǎn)都只有一個進程,各窗口的會話是通用的,即看新聞的窗口發(fā)請求到Blog是會帶上我在blog登錄的cookie。想一想,當(dāng)我們用鼠標(biāo)在Blog/BBS/WebMail點擊別人留下的鏈接的時候,說不

24、定一場精心準(zhǔn)備的CSRF攻擊正等著我們。文件上傳漏洞漏洞說明利用當(dāng)前WEB系統(tǒng)已有的上傳功能,比如文件上傳、圖像上傳等的漏洞來上傳任意文件或者webshell。漏洞危害直接上傳webshell到服務(wù)器,甚至獲取服務(wù)器的root權(quán)限。處理說明后綴檢查不嚴(yán)引起的上傳任意文件,主要為jsp和war后綴文件,需要進行限制;采用白名單嚴(yán)格限制上傳類型。示例無不安全的直接對象引用漏洞說明當(dāng)開發(fā)人員把一個引用暴露給內(nèi)部執(zhí)行對象時,如一個文件、目錄、數(shù)據(jù)庫記錄或鍵值、URL或格式參數(shù),可能發(fā)生直接對象引用。攻擊者可以操縱這些引用訪問其它未經(jīng)認(rèn)證的對象,即指一個已經(jīng)授權(quán)的用戶,通過更改訪問時的一個參數(shù),從而訪問

25、到了原本其并沒有得到授權(quán)的對象。Web應(yīng)用往往在生成Web頁面時會用它的真實名字,且并不會對所有的目標(biāo)對象訪問時來檢查用戶權(quán)限,所以這就造成了不安全的對象直接引用的漏洞。漏洞危害攻擊者可以操縱這些引用訪問其它未經(jīng)認(rèn)證的對象??赡茉斐赡夸洷闅v漏洞。處理說明控制應(yīng)用程序的訪問權(quán)限;使用非直接的對象引用這防止了攻擊者直接訪問其并未授權(quán)的對象,通過一種mapping或是其他的方法讓攻擊者無法直接訪問。 檢查訪問對每一個來自于不信任的源的直接對象引用都必須包含訪問控制檢查,從而確信該用戶對該對象擁有訪問權(quán)。示例如由于網(wǎng)站沒有對URL地址欄中輸入的內(nèi)容進行有效的限制,攻擊者可以在URL地址后加入

26、特殊的字符,如“./”,來對WEB站點中的實際對象,如文件、目錄等進行查看,甚至可以對它們進行修改和刪除。信息泄漏及不正確的錯誤操作漏洞說明WEB應(yīng)用程序可能通過各類應(yīng)用程序問題無意中泄漏其配置、內(nèi)部動作情況或侵害機密數(shù)據(jù)的信息。WEB應(yīng)用程序還會通過不正當(dāng)?shù)腻e誤信息處理,將站點內(nèi)部組成結(jié)構(gòu)及服務(wù)器、數(shù)據(jù)庫類型泄漏給攻擊者。如果WEB站點開發(fā)人員不對這些方面進行通用信息處理,就有可能存在這個漏洞。漏洞危害攻擊者利用這個弱點偷竊敏感數(shù)據(jù)或傳入更多嚴(yán)重的攻擊??赡茉斐赡夸洷闅v漏洞。處理說明url地址參數(shù)使用get方式傳送時,有時我們一般會使用一些有意義,顯而易見的參數(shù)值;可能導(dǎo)致非法用戶通過參數(shù)值

27、猜想我們系統(tǒng)有效數(shù)據(jù)。盡量使用數(shù)值或者無意義的參數(shù)作為url地址使用get方式傳送參數(shù);物理路徑泄漏:避免Web服務(wù)器的某些顯示環(huán)境變量的程序錯誤的輸出了Web服務(wù)器的物理路徑;避免Web服務(wù)器處理用戶請求出錯導(dǎo)致的物理信息泄漏。等等。示例如通過提交一個超長的請求,或者是某個精心構(gòu)造的特殊請求,或是請求一個Web服務(wù)器上不存在的文件。失效證證及會話管理漏洞說明如果WEB站點沒有對用戶賬戶、會話令牌進行嚴(yán)格的認(rèn)證及保護,以及對用戶與站點之間的會話進行安全連接,或者沒有妥善處理它們之間會話的生命周期,那么就有可能存在用戶被劫持和會話內(nèi)容泄漏或被利用的風(fēng)險。此漏洞也是所有WEB應(yīng)用框架都存在的安全漏

28、洞。漏洞危害攻擊者使用密碼、密鑰或認(rèn)證令牌偽裝其它用戶的身份。處理說明建立一個無法預(yù)測的安全令牌后,就必須在這個令牌生成到廢止的整個生命周期中保障它的安全,確保不會將其泄露給除令牌用戶以外的其他任何人。會話生命周期管理:(1)會話創(chuàng)建的嚴(yán)格驗證;(2)會話退出:應(yīng)總是執(zhí)行退出功能,通過它刪除服務(wù)器上的所有會話資源并終止會話令牌;(3)會話有效性:處于非活動狀態(tài)一段時間(如10分鐘)后,應(yīng)執(zhí)行會話終止;(4)應(yīng)防止并行登錄,每次一名用戶登錄,都應(yīng)發(fā)布一個新會話令牌,同時廢止任何屬于該用戶的現(xiàn)有會話;應(yīng)采取特殊措施保護會話管理機制的安全,防止應(yīng)用程序用戶成為各種攻擊的目標(biāo)。如:不能以明文形式傳送的

29、令牌;絕不能在URL中傳送會話令牌,因為這樣做易于受到會話固定攻擊,并可能使令牌出現(xiàn)在各種日志機制中最好是對所有導(dǎo)航使用POST請求實現(xiàn)這一目的,并將令牌保存在HTML表單隱藏字段中。不完全依賴HTTP cookie 傳送會話令牌可防御跨站點請求偽造攻擊。應(yīng)用程序不得接受它認(rèn)為不是自己發(fā)布的任意會話令牌。應(yīng)立即在瀏覽器中取消該令牌,并將用戶返回到應(yīng)用程序的起始頁面。任何時候,只要一名用戶與應(yīng)用程序的交互狀態(tài)由匿名轉(zhuǎn)變?yōu)榇_認(rèn),應(yīng)用程序就應(yīng)該發(fā)布一個新的會話令牌。這不僅適用于用戶成功登錄的情況,而且適用于匿名用戶首次提交個人或其他敏感信息時。示例略不安全的信息存儲及通信漏洞說明大多數(shù)WEB應(yīng)用程序

30、都使用加密技術(shù)來保護敏感數(shù)據(jù)的安全。但是,還有一些WEB站點卻使用簡單的不合理的加密技術(shù)來保護敏感數(shù)據(jù),有的甚至根本沒有使用任何加密技術(shù),這些方式都有可能造成機密的數(shù)據(jù)被查看、修改、復(fù)制或刪除。另外,當(dāng)用戶與WEB站點進行通信時,如果不對在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)包時行加密傳輸,就有可能被攻擊通過以網(wǎng)絡(luò)嗅探的方式截獲,從而引起嚴(yán)重的安全事件?,F(xiàn)在一種普遍的WEB內(nèi)容加密通信方式就是使用SSL(也就是安全套接字)。漏洞危害攻擊者通過缺乏有效保護的數(shù)據(jù)來竊取身份及其它犯罪行為。處理說明對敏感數(shù)據(jù)需要進行保護,如:加密;對關(guān)鍵的數(shù)據(jù)傳輸采用加密傳輸。示例無限制URL訪問失效漏洞說明通常,一個沒有授權(quán)并且沒有

31、通過驗證的用戶是不可能打開一個受保護的網(wǎng)頁的。但是,如果WEB站點使用了錯誤的RRL訪問控制規(guī)則,那么,一個有明確動機且技術(shù)高超的攻擊者就有可能利用這個漏洞打開這些網(wǎng)頁,并且有可能引用其中的某些功能和查看機密數(shù)據(jù)。漏洞危害攻擊者就有可能利用這個漏洞打開這些網(wǎng)頁,并且有可能引用其中的某些功能和查看機密數(shù)據(jù)。處理說明正確配置WEB站點的訪問控制策略,以便將所有可能的非法訪問者在打開網(wǎng)頁全部拒之門外。示例無特殊字符的HTML轉(zhuǎn)換漏洞說明數(shù)據(jù)庫讀取一些<div>標(biāo)簽或特殊字符(如單引號等)在頁面直接展示;漏洞危害使直接頁面輸出值時頁面樣式走樣。處理說明盡量先把特殊字符做HTML字符轉(zhuǎn)換示例

32、無緩沖區(qū)溢出漏洞說明緩沖區(qū)溢出漏洞想必大家都很熟悉,無非是Web服務(wù)器沒有對用戶提交的超長請求沒有進行合適的處理,這種請求可能包括超長URL,超長HTTP Header域,或者是其它超長的數(shù)據(jù)。漏洞危害可能造成程序崩潰或者執(zhí)行攻擊者的命令。處理說明1、及時打上WEB軟件、操作系統(tǒng)補??;2、對用戶提交的數(shù)據(jù)進行長度判斷。示例無安全開發(fā)規(guī)范結(jié)合常見WEB安全漏洞,對部門日常基于互聯(lián)網(wǎng)網(wǎng)站的代碼開發(fā),提出以下規(guī)范要求。用戶登錄處理登錄程序需要對用戶輸入的用戶名及口令仔細(xì)進行有效性校驗;對用戶提交一些登錄數(shù)據(jù)進行合法性驗證,過濾掉一些特殊字符,主要有%<>&+-"'

33、;(),%主要是為了過濾%20前的一些非可見字符引發(fā)的問題,如回車(%0a)、換行符(%0d)、空字符(%00),<>是為了過濾HTML和JAVASCRIPT腳本注入,% ; & + - " '( ) 主要是為了防止SQL腳本注入;要求登錄驗證必須采用圖片驗證碼方式;對于口令驗證過程,建議采用下列方式:根據(jù)提交的用戶名在數(shù)據(jù)庫中查找記錄,如果沒有則出錯返回,如果有該用戶,轉(zhuǎn)步驟<2>;將得到的記錄中的口令部分與用戶輸入的口令進行字符串比較,如果一致則允許通過,否則出錯返回。注意:不要在一條select語句中同時完成對用戶/口令的驗證,以增加潛在

34、的危險攻擊的難度。會話安全建立一個無法預(yù)測的安全令牌后,在這個令牌生成到廢止的整個生命周期中保障它的安全,確保不會將其泄露給除令牌用戶以外的其他任何人;會話生命周期管理:(1)會話創(chuàng)建的嚴(yán)格驗證;(2)會話退出:應(yīng)總是執(zhí)行退出功能,通過它刪除服務(wù)器上的所有會話資源并終止會話令牌;(3)會話有效性:處于非活動狀態(tài)一段時間(如10分鐘)后,應(yīng)執(zhí)行會話終止;(4)應(yīng)防止并行登錄,每次一名用戶登錄,都應(yīng)發(fā)布一個新會話令牌,同時廢止任何屬于該用戶的現(xiàn)有會話;應(yīng)采取特殊措施保護會話管理機制的安全,防止應(yīng)用程序用戶成為各種攻擊的目標(biāo)。如:不能以明文形式傳送的令牌;絕不能在URL中傳送會話令牌,因為這樣做易于

35、受到會話固定攻擊,并可能使令牌出現(xiàn)在各種日志機制中;最好是對所有導(dǎo)航使用POST請求實現(xiàn)這一目的,并將令牌保存在HTML表單隱藏字段中;不完全依賴HTTP cookie 傳送會話令牌可防御跨站點請求偽造攻擊。應(yīng)用程序不得接受它認(rèn)為不是自己發(fā)布的任意會話令牌。應(yīng)立即在瀏覽器中取消該令牌,并將用戶返回到應(yīng)用程序的起始頁面。任何時候,只要一名用戶與應(yīng)用程序的交互狀態(tài)由匿名轉(zhuǎn)變?yōu)榇_認(rèn),應(yīng)用程序就應(yīng)該發(fā)布一個新的會話令牌。這不僅適用于用戶成功登錄的情況,而且適用于匿名用戶首次提交個人或其他敏感信息時。用戶輸入檢查及過濾目前網(wǎng)站安全最常見的問題,就是注入和XSS攻擊,而這兩個攻擊的源頭,都來自于沒有妥善過

36、濾由使用者傳來的數(shù)據(jù),除了輸入數(shù)據(jù)之外,包含cookie、參數(shù)都可能成為黑客利用的工具。 因此要求對用戶輸入提交的內(nèi)容進行嚴(yán)格過濾:要求對用戶輸入內(nèi)容進行業(yè)務(wù)內(nèi)容合法性檢查;對用戶提交的數(shù)據(jù)進行長度判斷;要求在WEB前端、WEB后端均需要進行數(shù)據(jù)檢查??蛻糨斎氲脑紨?shù)據(jù)進行校驗不要完全依賴于Script。腳本是不安全的,用戶可能屏蔽腳本,因引要求在客戶端合法性檢查的基礎(chǔ)上,還需要將用戶數(shù)據(jù)送入服務(wù)器端,在服務(wù)器上驗證字符串的合法性。拒絕任何以斜線開始的內(nèi)容; 斜線意味著“相對于根”或絕對路徑。用戶很少需要訪問web根目錄之外的數(shù)據(jù),這樣他們使用的路徑就是相對于web根目錄,而不是絕對

37、路徑,為安全起見,有必要拒絕任何以斜線開始的內(nèi)容;拒絕任何包含單個點(.)和兩個點(.)的序列的內(nèi)容在路徑中單個點(.)和兩個點(.)的序列有特殊含義。單點意味著“相對于當(dāng)前目錄”,而雙點意味著“相對于當(dāng)前目錄的父目錄”。有些人可以建立象./././etc/passwd這樣的串逆向三層,然后向下進入/etc/passwd文件,從而對系統(tǒng)安全造成極大威脅;在把用戶提交的數(shù)據(jù)傳送給系統(tǒng)之前,過濾掉如下字符:1 |(豎線符號)2 & (& 符號)3;(分號)4 $(美元符號)5 %(百分比符號)6 (at 符號)7 '(單引號)8 "(引號)9 '(反斜杠轉(zhuǎn)

38、義單引號)10 "(反斜杠轉(zhuǎn)義引號)11 <>(尖括號)12 ()(括號)13 +(加號)14 CR(回車符,ASCII 0x0d)15 LF(換行,ASCII 0x0a)16 ,(逗號)17 (反斜杠)還有:* ! # :如:HTML的輸入標(biāo)識符中去除所有輸入的尖括號'<' ' >';仔細(xì)檢查輸入語句,一般情況拒絕如下命令:rm fmail delete /etc/passwd或其它對系統(tǒng)有威脅的操作。對數(shù)值型變量,首先要判斷其內(nèi)容是不是真的數(shù)值型,如果不是,就進行出錯處理。界面輸出對所有輸出數(shù)據(jù)進行適當(dāng)?shù)木幋a,以防止任何已成

39、功注入的腳本在瀏覽器端運行。頁面重定向盡量不將用戶提交的數(shù)據(jù)合并到重定向目標(biāo)中;從應(yīng)用程序中刪除重定向頁面,用直接指向相關(guān)目標(biāo)URL的鏈接替代指向重定向頁面的鏈接;建立一個包含所有有效重定向URL的列表。不以參數(shù)的形式向重定向頁面?zhèn)魉湍繕?biāo) URL,相反,傳送這個列表的一個索引。重定向頁面應(yīng)在它的列表中查詢這個索引,并返回一個指向相關(guān)URL的重定向。應(yīng)用程序應(yīng)在所有重定向中使用相對 URL,重定向頁面應(yīng)嚴(yán)格確認(rèn)它收到的URL是一個相對URL。它應(yīng)當(dāng)確認(rèn):用戶提交的URL或者以單獨一個斜線字符、后接一個字母開頭,或者以一個字母開頭,并且在第一個斜線前沒有冒號。應(yīng)拒絕而不是凈化任何其他輸入。對于確需

40、要根據(jù)用戶輸入數(shù)據(jù)進行重組生成一個url進行,進行頁面重定向的,跳轉(zhuǎn)個面時先要將字符串用URLEncoder.encode()進行編碼。錯誤信息處理有許多程序開發(fā)人員對于錯誤處理不夠細(xì)心,導(dǎo)致腳本語法或數(shù)據(jù)庫發(fā)生錯誤時,直接讓錯誤碼呈現(xiàn)在瀏覽器,錯誤信息對一般的使用者沒什么意義,但往往會給黑客帶來許多參考價值。在開發(fā)過程中,往往設(shè)定輸出一些出錯信息,或者借助系統(tǒng)的出錯信息對程序進行調(diào)試。在提交測試后,要求注意替換這些出錯誤提示信息,以免泄露一些重要的信息給惡意攻擊者。特別時在程序測試階段,一定要注意用戶輸入錯誤數(shù)據(jù)后程序的運行結(jié)果及報錯信息等。為了不讓教多了十分小心地正在做登錄時的錯誤信息弄錯

41、什么了。面向用戶的錯誤信息不應(yīng)該給的太足,以免用戶由此推斷出程序的內(nèi)部結(jié)構(gòu)的相關(guān)信息。對WEB站點所返回的錯誤信息應(yīng)當(dāng)以最通用的方式表示,盡量不顯露出服務(wù)器物理路徑、操作系統(tǒng)版本和數(shù)據(jù)庫等信息。對象訪問權(quán)限控制應(yīng)用程序的訪問權(quán)限,如針對每個業(yè)務(wù)界面都判斷權(quán)限,沒有權(quán)限的直接跳轉(zhuǎn)到錯誤提示界面;使用非直接的對象引用這防止了攻擊者直接訪問其并未授權(quán)的對象,通過一種mapping或是其他的方法讓攻擊者無法直接訪問,比如用戶號碼不在URL中直接傳遞,而是通過調(diào)用父窗口中的某個方法取得,避免攻擊者直接修改URL串的信息,意外得到其他用戶的信息;檢查訪問對每一個來自于不信任的源的直接對象引用都必須包含訪問

42、控制檢查,從而確信該用戶對該對象擁有訪問權(quán),比如判斷當(dāng)前傳入的用戶號碼和已經(jīng)登錄的用戶號碼是否一致,如果不一致,則認(rèn)為是漏洞攻擊。上傳內(nèi)容檢查嚴(yán)格檢查上傳文件的類型,對jsp和war后綴文件,需要進行限制;采用白名單嚴(yán)格限制上傳類型。敏感信息處理關(guān)鍵的重要的數(shù)據(jù)參數(shù)發(fā)送時不要出現(xiàn)在URL中;hidden字段的數(shù)據(jù)不能修改傳遞(hidden的值不能被顯示,但是會被傳遞并且在html源文件中可以查看值,防止其值被修改并傳遞)不要用hidden去取數(shù)據(jù),建議可以利用session來保存hidden數(shù)據(jù);有些檔案該刪就刪,例如一些應(yīng)用程序的安裝腳本不要留在系統(tǒng)上,賬號等相關(guān)的敏感數(shù)據(jù)一定要設(shè)在防止搜尋

43、引擎索引、快取的數(shù)據(jù)夾,或設(shè)定相關(guān)的防索引語法。 密碼儲存及使用密碼不要采用明碼的方式儲進數(shù)據(jù)庫,透過像是md5的方式進行編碼,讓敏感信息可以受到更好的保障;對關(guān)鍵的數(shù)據(jù)(如密碼)傳輸采用加密傳輸,如使用SSL安全套接字;密碼使用刪除密碼:如果在應(yīng)用運行中有將密碼保存到內(nèi)存或應(yīng)用運行生命周期內(nèi)的,應(yīng)在使用后進行清空。數(shù)據(jù)庫執(zhí)行腳本對于java語言代碼,在所有可能的情況下,應(yīng)該使用preparedstatement和動態(tài)sql,即用?符號代表參數(shù),通過preparedstatement的setxxx(如setint, setstring等)方法設(shè)置參數(shù),然后執(zhí)行sql語句,不要養(yǎng)成在每

44、次語句執(zhí)行前根據(jù)參數(shù)拼sql語句的習(xí)慣。系統(tǒng)調(diào)用盡量減少system()、popen()之類的系統(tǒng)調(diào)用,特別是這些調(diào)用如果要激活一個系統(tǒng)shell時,更應(yīng)該仔細(xì)檢查其安全性,以免被黑客利用。如果不是特別需要,不要使用system()或者popen()這樣的系統(tǒng)調(diào)用,特別是以用戶輸入的數(shù)據(jù)作為這些調(diào)用的參數(shù)的時候。如果沒有對用戶輸入數(shù)據(jù)進行分析處理,可能會被用來執(zhí)行系統(tǒng)命令。如果必須使用這些調(diào)用,應(yīng)當(dāng)過濾掉用戶輸入數(shù)據(jù)中存在的危險字符: ; & < >等等。WEB服務(wù)器配置正確配置WEB站點的訪問控制策略,以便將所有可能的非法訪問者在打開網(wǎng)頁全部拒之門外,比如可以配置過濾器,

45、對所有頁面進行登錄驗證碼的校驗,無效的驗證碼將不允許訪問這些頁面,而是直接跳轉(zhuǎn)到登錄界面。參考: 畢 業(yè) 論 文論文題目學(xué) 院專 業(yè)年 級姓 名指導(dǎo)教師職 稱(200 年 月)教務(wù)處制畢業(yè)設(shè)計說明書與畢業(yè)論文撰寫的規(guī)范化要求一篇完整的畢業(yè)設(shè)計說明書或畢業(yè)論文有題目、摘要及關(guān)鍵詞、目錄、引言(前言)、正文、結(jié)論、謝辭、參考文獻、附錄等幾部分構(gòu)成。要求理工科專業(yè)不少于4000字,文科專業(yè)不少于6000字。一、畢業(yè)設(shè)計說明書撰寫的主要內(nèi)容與基本要求一份完整的畢業(yè)設(shè)計說明書應(yīng)包括如下主要內(nèi)容:1題目設(shè)計課題名稱,要求簡潔、確切、鮮明。2中外文摘要及關(guān)鍵詞應(yīng)扼要敘述本設(shè)計的主要內(nèi)容、特點,文字要簡練。中

46、文摘要約300字左右;外文摘要約250個實詞左右。關(guān)鍵詞35個。3目錄主要內(nèi)容的目錄。4前言應(yīng)說明本設(shè)計的目的、意義、范圍及應(yīng)達到的技術(shù)要求;簡述本課題在國內(nèi)(外)的發(fā)展概況及存在的問題;本設(shè)計的指導(dǎo)思想;闡述本設(shè)計應(yīng)解決的主要問題。 5正文(1)設(shè)計方案論證:應(yīng)說明設(shè)計原理并進行方案選擇。應(yīng)說明為什么要選擇這個方案(包括各種方案的分析、比較);還應(yīng)闡述所采用方案的特點(如采用了何種新技術(shù)、新措施、提高了什么性能等)。(2)設(shè)計及計算部分:這是設(shè)計說明書的重要組成部分,應(yīng)詳細(xì)寫明設(shè)計結(jié)果及計算結(jié)果。(3)樣機或試件的各種實驗及測試情況:包括實驗方法、線路及數(shù)據(jù)處理等。(4)方案的校驗:說明所設(shè)

47、計的系統(tǒng)是否滿足各項性能指標(biāo)的要求,能否達到預(yù)期效果。校驗的方法可以是理論分析(即反推算),包括系統(tǒng)分析;也可以是實驗測試及計算機的上機運算等。6結(jié)論概括說明本設(shè)計的情況和價值 ,分析其優(yōu)點、特色,有何創(chuàng)新,性能達到何水平,并指出其中存在的問題和今后的改進方向。7謝辭簡述自己通過本設(shè)計的體會,并對指導(dǎo)老師和協(xié)助完成設(shè)計的有關(guān)人員表示謝意。8參考文獻應(yīng)列出主要參考文獻。9附錄將各種篇幅較大的圖紙、數(shù)據(jù)表格、計算機程序等作為附錄附于說明書之后。二、畢業(yè)論文撰寫的主要內(nèi)容與基本要求1題目題目應(yīng)該簡短、明確,要有概括性,讓人看后能大致了解文章的確切內(nèi)容、專業(yè)的特點和學(xué)科的范疇。題目的字?jǐn)?shù)要適當(dāng),一般不

48、宜超過20字。字體為2中外文摘要及關(guān)鍵詞摘要也稱內(nèi)容提要,應(yīng)當(dāng)以濃縮的形式概括研究課題的主要內(nèi)容、方法和觀點,以及取得的主要成果和結(jié)論,應(yīng)反映整個論文的精華。中文摘要約300字左右為宜,同時要求寫出250個實詞左右的外文摘要。關(guān)鍵詞3-5個。摘要應(yīng)寫得扼要、準(zhǔn)確,一般在畢業(yè)論文全文完成后再寫摘要。在寫作中要注意以下幾點:(1)用精練、概括的語言表達,每項內(nèi)容均不宜展開論證。(2)要客觀陳述,不宜加主觀評價。(3)成果和結(jié)論性意見是摘要的重點內(nèi)容,在文字上用量較多,以加深讀者的印象。(4)要獨立成文,選詞用語要避免與全文尤其是前言和結(jié)論雷同。(5)既要寫得簡短扼要,又要行文活潑,在詞語潤色、表達

49、方法和章法結(jié)構(gòu)上要盡可能寫得有文采,以喚起讀者對全文的閱讀的興趣。3目錄(必要時)論文編寫完成后,為了醒目和便于讀者閱讀,可為論文編寫一個目錄。目錄可分章節(jié),每一章節(jié)之后應(yīng)編寫頁碼。4前言前言是全篇論文的開場白,它包括:(1)選題的緣由。(2)對本課題已有研究情況的評述。(3)說明所要解決的問題和采用的手段、方法。(4)概括成果及意義。作為摘要和前言,雖然所定的內(nèi)容大體相同,但仍有很大的區(qū)別。區(qū)別主要在于:摘要一般要寫得高度概括、簡略,前言則可以稍微具體些;摘要的某些內(nèi)容,如結(jié)論意見,可以作為籠統(tǒng)的表達,而前言中所有的內(nèi)容則必須明確表達;摘要不寫選題的緣由,前言則明確反映;在文字量上前言一般多

50、于摘要。5正文正文是作者對自己研究工作的詳細(xì)表述。它占全文的較多篇幅。主要內(nèi)容包括研究工作的基本前提、假設(shè)和條件;模型的建立,實驗方案的擬定;基本概念和理論基礎(chǔ);設(shè)計計算的主要方法和內(nèi)容;實驗方法、內(nèi)容及其結(jié)果和意義的闡明;理論論證,理論在實際中的應(yīng)用等等。根據(jù)課題的性質(zhì),論文正文允許包括上述部分內(nèi)容。正文的寫作要求:(1)理論分析部分應(yīng)寫明所作的假設(shè)及其合理性,所用的分析方法、計算方法、實驗方法等哪些是別人用過的,哪些是自己改進的,哪些是自己創(chuàng)造的,以便指導(dǎo)教師審查和糾正。這部分所占篇幅不宜過多,應(yīng)以簡練、明了的文字概略表達。(2)課題研究的方法與手段分別用以下幾種方法說明:a用實驗方法研究課題,應(yīng)具體說明實驗用的裝置、儀器、原材料的性能是否標(biāo)準(zhǔn),并應(yīng)對所有裝置、儀器、原材料做出檢驗和標(biāo)定。對實驗的過程或操作方法,力求敘述得簡明扼要,對人所共知的或細(xì)節(jié)性的內(nèi)容不必詳述。b用理論推導(dǎo)的手段和方法達到研究目的的,這方面內(nèi)容一定要精心組織,做到概念準(zhǔn)確,判斷推理符合客觀事物的發(fā)展規(guī)律,符合人們對客觀事物的認(rèn)識習(xí)慣與程序。換言之,要做到言之有序,言之有理,以論點為中樞,組織成完整而嚴(yán)謹(jǐn)?shù)膬?nèi)容整體。c用調(diào)查研究的方法達到研究目的的,調(diào)查目標(biāo)、對象、范圍、時間、地點、調(diào)查的過程和方法等,這些內(nèi)容與研究的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論