freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

應(yīng)用系統(tǒng)安全開發(fā)技術(shù)規(guī)范培訓(xùn)資料-資料下載頁

2025-04-16 00:32本頁面
  

【正文】 下的請求中被傳輸?shù)椒?wù)端,可以在生成Cookie時,在其中加入secure的屬性。(“SetCookie”,”name=value。secure”)。 輸入驗證 數(shù)據(jù)格式驗證驗證提交的數(shù)據(jù)是否符合業(yè)務(wù)規(guī)則及格式約束,如:數(shù)據(jù)格式、數(shù)據(jù)長度、數(shù)據(jù)類型。 Token驗證對涉及到數(shù)據(jù)提交操作的請求,必須采用POST方式提交form表單數(shù)據(jù),并在提交的表單中附加Token,通過在服務(wù)端驗證Token的方式驗證請求的合法性,避免由于URL猜測引擎的CSRF漏洞攻擊。 輸入文件名的驗證如果需要從調(diào)用方接收輸入文件名,要確保文件名具有嚴格的格式,以便可以確定它是否有效。一段有漏洞的程序:String fileName = (filename)。String content = (content)。FileWriter fw = new FileWriter(new File(“/home/y/share/templates/” + fileName))。(content)。應(yīng)該對文件名做嚴格的檢查,比如使用正則表達式,限定文件名只能包括字母和數(shù)字。 輸出處理 使用Struts標簽庫輸出在可能的情況下頁面上的變量應(yīng)都采用Struts標簽輸出,Struts標簽本身具有特殊字符編碼的功能。 bean:write如果通過bean:write輸出變量,除特殊情況下確實需要輸出HTML編碼,否則都應(yīng)該使用filter屬性值為true。缺省情況下,該值為true。 變量輸出前編碼如果未采用標簽輸出變量,而是采用直接代碼的方式,(“param”)、(“key”)或服務(wù)端傳來的%=var%等方式輸出變量時,必須在變量輸出之前,對變量進行編碼轉(zhuǎn)換。 在HTML標簽及屬性中輸出在HTML標簽及屬性中輸出變量時,必須對變量進行符合OWASP標準的HtmlEncode編碼操作divendoceForHTML($var)/diva href= endoceForHTML($var)/adiv name=” endoceForHTML($var)”/div 在HTML事件中輸出在HTML事件中輸出變量時,必須對變量進行符合OWASP標準的JavascriptEncode編碼操作。a href= onclick=”f(‘encodeForJavascript($var)’)”link/a 在script標簽中輸出在script標簽中輸出時,首先應(yīng)該確保輸出的變量處于引號中,并且通過符合OWASP標準的JavascriptEncode編碼操作對變量進行編碼。script var temp=” encodeForJavascript($var)”。/script 在CSS中輸出CSS代碼中的XSS攻擊形式也有很多種,如:style、style attribute等都可能引起XSS攻擊。應(yīng)盡可能避免在style標簽內(nèi)部、html中的style屬性中、css文件中輸出變量。如果確實有需要輸出變量的情況,應(yīng)在輸出前對編碼進行符合OWASP標準的cssEncode操作。style li{ liststyleimage:url(“javascript:alert(‘encodeForCSS($var)’)”)。}/style 在地址中輸出對URL中的路徑或查詢參數(shù)中輸出變量,應(yīng)該對變量使用符合OWASP標準的URLEncode編碼操作a href=”/root/path?param=encodeForURL($var)”link/a 富文本輸出富文本的數(shù)據(jù)類型比較特殊,富文本屬于一段比較完整的HTML代碼,在輸出時和使用時也不會被拼接到某個特殊的位置。因此如果當前請求中存在包含HTML的富文本內(nèi)容,不能直接對特殊字符進行編碼或轉(zhuǎn)義,應(yīng)對富文本內(nèi)容進行過濾,保證輸出到客戶端的的富文本中事件代碼、iframe、script、base、from等危險的HTML標簽被嚴格禁止,僅保留安全的標簽存在。encodeForRichHtml($var) 敏感信息處理 數(shù)據(jù)加密存儲將不允許明文存儲的數(shù)據(jù)加密后在存儲到數(shù)據(jù)庫或文件中,加密算法不能采用自己實現(xiàn)的算法,應(yīng)采用MDSHA、DES等經(jīng)過驗證的加密算法進行加密。如:用戶口令,必須使用不可逆的加密算法加密后在存儲在數(shù)據(jù)庫中。 數(shù)據(jù)傳輸加密將涉及到以下情況的請求通過Https協(xié)議發(fā)送216。 涉及到用戶登錄驗證的請求216。 涉及到會話生成的請求216。 涉及到用戶密碼傳輸及修改的請求216。 涉及到支付操作的請求216。 涉及到重要及敏感數(shù)據(jù)的請求 禁止緩存服務(wù)端和客戶端都禁止緩存敏感數(shù)據(jù)。在服務(wù)端,當敏感數(shù)據(jù)使用完后,應(yīng)將數(shù)據(jù)從內(nèi)存中刪除。在客戶端,包含敏感數(shù)據(jù)的HTTPS請求,要設(shè)置以下的頭信息,禁止瀏覽器緩存頁面數(shù)據(jù),HTTP頭信息代碼如下:CacheControl:nocache,nostore。 異常信息處理不允許將異常信息拋給客戶端顯示,否則可能造成服務(wù)端信息泄露。如果系統(tǒng)功能出現(xiàn)異常,應(yīng)跳轉(zhuǎn)到專門的異常頁面,并將友好的提示信息提示給用戶,而不是將異常信息顯示給用戶,并且返回給客戶端HTTP響應(yīng)結(jié)果為500。 特殊頁面跳轉(zhuǎn) 404路徑不存在當用戶訪問了一個系統(tǒng)中不存在的路徑時,應(yīng)將請求跳轉(zhuǎn)到指定的404處理頁面,提示用戶訪問的路徑不存在,并返回給瀏覽器HTTP 404編碼。 403禁止訪問當用戶訪問了一個無訪問權(quán)限的路徑時,應(yīng)將請求跳轉(zhuǎn)到指定的403處理頁面,提示用戶無權(quán)訪問,并返回給瀏覽器HTTP 403編碼。 500內(nèi)部錯誤當用戶操作引起系統(tǒng)服務(wù)端應(yīng)用異常時,應(yīng)將請求跳轉(zhuǎn)到指定的500處理頁面,提示用戶當前系統(tǒng)出現(xiàn)異常,并返回給瀏覽器HTTP 500編碼。 文件操作 臨時文件系統(tǒng)運行過程中生成的臨時文件必須存放在應(yīng)用部署根目錄之外。并且在使用完后要立即刪除,臨時文件不允許重復(fù)使用。臨時文件名必須采用足夠長度的隨機算法生成。 文件上傳 文件路徑控制對上傳的文件需要在服務(wù)端將路徑轉(zhuǎn)為系統(tǒng)絕對路徑,然后對比當前路徑是否屬于允許存儲的路徑之下。 文件類型控制禁止上傳可執(zhí)行文件,如:jsp,asp,aspx,exe,bat等類型的文件,通過白名單的方式僅僅允許上次指定類型的文件。 文件大小控制必須按照要求限制上傳到服務(wù)器上文件的大小 目錄文件數(shù)量不要將大量的文件上傳并存儲在統(tǒng)一個目錄下,應(yīng)該按照一定的規(guī)則,將文件分散存放到不同的目錄。 文件名保存在服務(wù)器上的文件名必須經(jīng)過修改,文件上傳到服務(wù)器上后,采用非常隨機的算法(如:GUID)重新生成文件名。 文件下載 下載驗證每個文件下載之前都應(yīng)通過權(quán)限驗證,否則可能引起通過修改URL參數(shù)即可下載任意文件的漏洞。 文件路徑控制所有下載的文件,都必須驗證待下載文件路徑是否出在允許下載文件的路徑范圍內(nèi)。 資源釋放所有涉及到IO操作的資源都應(yīng)該在 finally 塊中釋放,保證資源在任何環(huán)境下都會被釋放。 內(nèi)存控制 大對象如果要加載大對象到內(nèi)存中,應(yīng)盡可能減少大對象在內(nèi)存中的存活時間,使用完后立即釋放,并將對象應(yīng)用設(shè)置為NULL,對于大對象的內(nèi)存回收不應(yīng)太過依賴內(nèi)存垃圾回收機制。 數(shù)據(jù)庫操作要限制數(shù)據(jù)庫操作的每個請求返回的結(jié)果集最大值,如果需要讀取的結(jié)果集記錄數(shù)過大,應(yīng)采用多次分頁讀取的方式,分批從數(shù)據(jù)庫中讀取數(shù)據(jù)。 外部程序調(diào)用漏洞應(yīng)該避免在程序中調(diào)用系統(tǒng)命令,如果必須使用系統(tǒng)命令,應(yīng)對輸入?yún)?shù)做嚴格的過濾,比如一段存在漏洞的程序如下:String ip = (“ip”)。Process p = ().exec(“/bin/sh nslookup ” + ip)。應(yīng)使用正則表達式對輸入的參數(shù)(IP)做嚴格過濾,否則用戶可以提交如下格式的 IP 數(shù)據(jù): 。 [自己的命令]來執(zhí)行自己的命令。 整數(shù)溢出整數(shù)的范圍是[2^31, +2^311],又有以下等式成立:2^31 == 2^31 + 1以上范圍和等式在 Java 中同樣成立,所以整數(shù)溢出同樣在存在于Java,由于整數(shù)的溢出導(dǎo)致流程的改變。一段存在漏洞的程序如下:public void sample(byte[] b, int off, int len) {if (len 0 || off 0 || len + off ) {// do A…} else {// do B…}}正確的做法如下:public void sample(byte[] b, int off, int len) {if (len 0 || off 0 || len off) {// do A…} else {// do B…}} C++安全編程規(guī)范 不信任未知在幾乎所有安全的程序中,第一道防線就是檢查接收到的每一條數(shù)據(jù)。如果能不讓惡意的數(shù)據(jù)進入程序,或者至少不在程序中處理它,程序在面對攻擊時將更加健壯。這與防火墻保護計算機的原理很類似,它不能預(yù)防所有的攻擊,但它可以讓程序更加穩(wěn)定。這個過程叫做檢查、驗證或者過濾輸入。通常,最好在數(shù)據(jù)最初進入程序時或在實際使用這些數(shù)據(jù)前都對其進行檢查。特別強調(diào):所有的輸入都是不安全的,在使用前都應(yīng)進行檢查、驗證或者過濾。這里的輸入不僅僅指正常情況下的用戶輸入,還包括從文件獲取的內(nèi)容、從協(xié)議的數(shù)據(jù)包中獲取的內(nèi)容,從環(huán)境變量、注冊表等獲取的輸入。 免緩存區(qū)溢出緩存溢出出現(xiàn)在當一些數(shù)據(jù)拷貝到內(nèi)存區(qū)域中產(chǎn)生,如果內(nèi)存的緩存區(qū)不能夠容納這些數(shù)據(jù),到拷貝成功的時候,目標內(nèi)存的邊界部分就會被覆蓋。程序中的變量可以被存在程序棧(stack)中也可以存在程序堆(heap)中,因此我們也可以常聽到這些字匯,棧溢出和堆溢出,相比較這兩個溢出類型,棧溢出的利用多數(shù)情況下會比較容易點?,F(xiàn)在許多有緩存溢出風險的函數(shù)都存在相對安全的替代函數(shù),它們都通過傳遞參數(shù)來限制多少數(shù)據(jù)被調(diào)用。 strcpystrcpy():此函數(shù)沒有執(zhí)行任意長度的確認,而使用 strncpy()函數(shù)可以限制長度,當使用 strncpy()的時候,需要以 NULL 終結(jié)字符串,因為有 NULL 終止符隱含定義源緩存區(qū)的大小。不正確情況正確情況void func(char *str){char buffer[256]。strcpy(buffer, str)。return。}void func(char *str){char buffer[256]。strncpy(buffer, str, sizeof(buffer) 1)。buffer[sizeof(buffer) – 1] = 0。return。} strcatstrcat():此函數(shù)類似與 strcpy(),也不檢查字符串的長度,使用 strncat()可以很好的限制被拷貝的長度,strncat()函數(shù)只會追加定義在大小參數(shù)中的長度,NULL 終止符將終止字符串。不正確情況正確情況void func(char *str){char buffer[256]。strcat(buffer, str)。return。}void func(char *str){char buffer[256]。strncat(buffer,str,sizeof(buffer)1strlen(buffer))。return。} sprintfsprintf():此函數(shù)用來格式化字符串變量,是很容易產(chǎn)生緩存溢出的地方。使用 snprintf()可以很好的限制拷貝到緩存中的打印數(shù)據(jù)長度,snprintf()函數(shù)返回要傳遞過去的數(shù)據(jù)字符總數(shù),如果它大于能傳遞字節(jié)大小的值,那么沒有任何數(shù)據(jù)寫到緩存中,用戶應(yīng)檢查 snprintf()的值以保證要被打印的緩存。不正確情況正確情況void func(char *str){char buffer[256]。sprintf(buffer, “%s”, str)。return。}void func(char *str){char buffer[256]。if (snprintf(target, sizeof(target) 1, %s,string) sizeof(target) 1)return。} getsgets:此函數(shù)天生就存在漏洞,在應(yīng)用程序中應(yīng)該永遠不要使用,一般在編譯的時候也會被警告,gets()沒有規(guī)定任意長度,永遠將導(dǎo)致緩存溢出,它從標準輸入中讀取數(shù)據(jù)并一直到換行符或者 EOF 標識接收到,所讀的數(shù)據(jù)全部填充到定義的緩存,并不檢查任何長度。fgets()函數(shù)用來代替不安全的 gets()函數(shù),此函數(shù)會至多讀取’sizeof(buffer) – 1’的文件流 。當然中途讀取到 EOF 或者換行符也會停止。 不正確情況正確情況void func(char *str){char buffer[256]。gets(buffer)。return。}void func(char *str){char buffer[256]。fgets(buffer, sizeof(buffer) – 1, stdin)。return。} scanf、fscan、sscanscanf()、fscan()、sscan():在使用這些函數(shù)的時候需要小心讀取要放到固定長度緩存區(qū)的數(shù)據(jù),應(yīng)確保規(guī)定要讀到緩存區(qū)的數(shù)據(jù)長度。如下圖,在正確的情況下只能讀取 255 個字符到規(guī)定的緩存中,而在不正確的情況下,就會無限制的讀取,并導(dǎo)致函數(shù)的堆棧被破壞。不正確情況正確情況charbuffer[256]。intnum。
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1