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

正文內(nèi)容

中國石油天然氣股份有限公司應(yīng)用系統(tǒng)開發(fā)安全管理通則(編輯修改稿)

2025-05-15 07:33 本頁面
 

【文章內(nèi)容簡介】 繞過客戶端驗證。有了代理服務(wù)器,攻擊者可以在數(shù)據(jù)被客戶端“驗證”后修改數(shù)據(jù)(與“maninthemiddle”攻擊類似)。在實際的校驗中,輸入校驗首先定義一個有效(可接受)的字符集,然后檢查每個數(shù)據(jù)的字符是否在有效范圍內(nèi)。如果輸入中包含無效的字符,應(yīng)用程序應(yīng)該返回錯誤頁面并說明輸入中包含無效字符。這樣進行驗證的原因是定義無效的字符集比較困難,并且一些不應(yīng)該有效的字符通常不會被指出。另外,邊界檢查(例如字符串的最大長度)應(yīng)該在字符有效性檢查以前進行。邊界分析可以防止大多數(shù)緩沖區(qū)溢出漏洞。必須提到的是從環(huán)境變量獲得的數(shù)據(jù)也需要進行驗證。同時避免在環(huán)境變量中存放敏感數(shù)據(jù)(例如密碼)。某些 Unix 系統(tǒng)(例如 FreeBSD)包含 ps 命令,可以讓用戶看到任何當(dāng)前進程的環(huán)境變量,這常常會暴露保密性信息。 語句如果應(yīng)用程序需要連接后端數(shù)據(jù)庫,使用存儲過程而不要在代碼中使用 SQL 語句。使用程序以外的嵌入在代碼中的 SQL 語句調(diào)用特別危險。難以防止攻擊者使用輸入域或者配置文件(由應(yīng)用程序載入)來執(zhí)行嵌入式的 SQL 攻擊。當(dāng)然,輸入驗證有助于緩解這種風(fēng)險。 (mented code)當(dāng)應(yīng)用程序在實際環(huán)境中開始應(yīng)用時,應(yīng)該刪除所有的注釋代碼。注釋代碼是用來調(diào)試或者測試的,它們不是最終應(yīng)用程序的一部分。無論如何應(yīng)該在實際的環(huán)境中刪除它們來避免意外的執(zhí)行(一般注釋標(biāo)識被刪除后就無法激活休眠的代碼,但還是存在可能性的,所以強烈建議執(zhí)行這項工作)。所有為用戶顯示的錯誤信息都不應(yīng)該暴露任何關(guān)于系統(tǒng)、網(wǎng)絡(luò)或應(yīng)用程序的敏感信息。如果可能的話,最好使用包含編號的一般的錯誤信息,這種信息只有開發(fā)者和/或支持小組才能理解。一般的錯誤信息的例子是“發(fā)生了錯誤(代碼 1234) ,請您與系統(tǒng)維護部門聯(lián)系。 ” 內(nèi)容對于 web 應(yīng)用,不要在 URL 上暴露任何重要信息,例如密碼、服務(wù)器名稱、IP 地址或者文件系統(tǒng)路徑(暴露了 web 服務(wù)器的目錄結(jié)構(gòu)) 。這些信息可以在攻擊時使用。例如下面就是一個不安全的 URL:rname=USERamp。password=PASSWORDamp。file=/home/USER/17 / 47 設(shè)置 PATH 變量設(shè)置 PATH 為一個已知的值,而不是僅僅使用啟動時的缺省值。攻擊者可以在攻擊應(yīng)用程序時使用 PATH變量,例如試圖執(zhí)行一個任意的程序。這些也可以應(yīng)用于大多數(shù)其他的語言。 Perl 語言安全規(guī)范多年以來,Perl 已經(jīng)成為用于系統(tǒng)管理和 Web CGI 開發(fā)的功能最強的編程語言之一(幾乎可以使用 Perl 做任何功能的程序)。但其擴展應(yīng)用,即作為 Inter 上 CGI 的開發(fā)工具,使得它經(jīng)常成為 web 服務(wù)器上的攻擊目標(biāo)。另外,大多數(shù) CGI 腳本有著比一般用戶更高的權(quán)限,導(dǎo)致它更容易受攻擊。下面列舉了一些開發(fā)者(特別是 CGI程序員)可以使用的主動的預(yù)防性的措施來增強 Perl 代碼的整體安全性(請注意:這不是 web 服務(wù)器 CGI 腳本安全性的指導(dǎo)原則)。 驗證Perl 版本 包含一個叫做 Taint Checking 的數(shù)據(jù)驗證措施。如果起用該功能,它就不允許通過用戶輸入(任何程序外的輸入)來操縱其他的外部程序(例如通過管道將數(shù)據(jù)導(dǎo)入另一個程序執(zhí)行))。一般而言,程序員不能信任輸入腳本和程序的數(shù)據(jù)(叫做 Tainted數(shù)據(jù) ),因為無法保證它不會產(chǎn)生危害(有意或者無意的)。Taint 驗證可以通過在命令行參數(shù)加入“T”來開啟。例如你可以在 Perl 腳本的第一行這樣加入“T”:!usr/bin/perl5 T Tainted 數(shù)據(jù)包括命令行參數(shù)、環(huán)境變量和來自文件的數(shù)據(jù)。引用 tainted 數(shù)據(jù)的變量也成為 tainted 數(shù)據(jù)。如果腳本試圖通過不安全的方式來使用 tainted 數(shù)據(jù)會產(chǎn)生一個致命錯誤(對這種情況稱為“不安全的依賴”(Insecure dependency)或者其他的說法)。啟用 tainted驗證在有些情況下會導(dǎo)致腳本停止運行,常常是由于Perl 解釋器要求所有腳本引用的外部程序的完全路徑必須在 PATH 環(huán)境變量中列出,同時 PATH 中包含的每個目錄除了目錄的所有者及相應(yīng)的所有者用戶組外無法修改。Taint 驗證對于環(huán)境比較敏感,這就可能會導(dǎo)致大多數(shù)程序員不愿使用它,但是只要可能的話,應(yīng)該使用 taint 驗證,特別是代碼執(zhí)行其他程序功能時(例如在 CGI 腳本的情況下)。如果不但輸入數(shù)據(jù)不可信而且實際的代碼也不可信會產(chǎn)生什么情況?例如用戶從網(wǎng)站上下載了一個ActiveX 控件,而它實際是一個特洛伊木馬(Trojan horse)。這種情況下 taint 驗證就不起作用。安全模塊讓程序員可以在 Perl 腳本中將不同的代碼模塊與安全對象聯(lián)系。每個安全對象對于運行的每塊代碼建立了一個限制的環(huán)境。這與 chroot 在一個進程中只能在整體目錄結(jié)構(gòu)的一個子目錄中運行類似。而 saft 對象限制 perl 代碼只能在 perl 包結(jié)構(gòu)的某些特定包中運行。如何使用安全模式超出了本文的范圍,但是程序員應(yīng)該在任何時候盡量使用這一功能。 (w)使用w 參數(shù)可以在 Perl 解釋腳本時顯示所有的警告信息。警告可以對以下情況產(chǎn)生:只使用了一次的變量或者完全沒有使用過得變量,未定義的文件句柄,未關(guān)閉的文件句柄,或者將非數(shù)值變量傳遞到數(shù)據(jù)變量。該功能不是針對安全處理的,但是可以有助于調(diào)試直接或者間接對安全有危害的錯誤。一般推薦總是使用w 參數(shù)。可以在 taint 驗證時在第一行這樣使用 w 參數(shù):!usr/bin/perl5 Tw Java 語言安全規(guī)范自從 1995 年發(fā)布以來,Java 成為簡單或者復(fù)雜網(wǎng)絡(luò)應(yīng)用的有效編程語言。它在設(shè)計時充分考慮了安全問題,因此它具有的限制特征有:收集不再使用的內(nèi)存碎片的垃圾收集器,嚴格的“sandbox”安全模型,以及在特定主機上限制應(yīng)用程序的活動的安全管理器。下面的使用中相關(guān)的規(guī)范:19 / 47 不要在標(biāo)準(zhǔn)輸出上打印消息在實際的 Inter 系統(tǒng)中避免使用 ()或者 ()打印日志和錯誤消息,原因是當(dāng)消息打印到標(biāo)準(zhǔn)輸出時,無法立即確定消息發(fā)生的地點。而且它有可能將敏感信息透露給攻擊者。 封裝Java 中,如果沒有使用訪問標(biāo)識符(access modifier(private、protected 或者 public))來聲明類、方法和屬性,那么它的默認訪問范圍是包,并且同一包中的所有類都能訪問它。必須記住雖然包有封裝功能,但它只有在每部分加載到包的代碼都由授權(quán)用戶控制時才起作用。惡意的用戶可以加入他們自己的類,從而對于包中的所有類、方法和屬性都有完全的訪問權(quán)限。Java 的政策文件支持兩種控制包訪問權(quán)限的前綴。accessClassInPackage defineClassInPackage 所有標(biāo)準(zhǔn)庫中的類都默認是可以公共訪問的(除了由“sun”開頭的類)。為了保證一個包的安全性,必須修改${JAVA HOME}/jre/lib/security 文件夾中的 文件。該文件中的重要行是:=sun.雖然該方法有作用,但是也有問題。例如程序員在 文件中定義包的安全時必須十分小心。在 中的值是字符型的,“sun.”將保護“”等包,但是不會對 “sun”或者“sunshine”等包進行保護。另一個方法是使用 JAR 密封(sealing) 。JAR(Java ARchive)文件是一些類的打包壓縮格式的文件,與常用的 ZIP 格式類似。如果從一個密封(sealing)的 JAR 文件中加載一個類時,隨后同一個包的類只能從該 JAR 文件加載。為了起用密封(sealing),必須在建立 JAR 文件時這樣設(shè)置密封(seal)參數(shù):Sealed: true 使用密封(sealing)的 JAR 文件比權(quán)限 (permission) 設(shè)置更好,因為它不需要安裝安全管理器(security manager)。Java 內(nèi)建的安全管理器是對應(yīng)用程序進行限制的一個方便的工具。很多情況下需要編制一個定制的安全管理器, 及以后的版本提供了 描述 設(shè)置的方法而不是 實施它們。 這是通過 Java 政策文件實現(xiàn)的??梢杂谜呶募韵鄬δK化的方式控制文件系統(tǒng)和網(wǎng)絡(luò)的訪問。例如可以限制應(yīng)用程序只能修改名字是 foo的文件。推薦使用 Java 政策文件和安全管理器而不是重新創(chuàng)建一個類或者系統(tǒng)來限制對主機和網(wǎng)絡(luò)的訪問。 C/C++ 語言安全規(guī)范C 本質(zhì)上是不安全的編程語言。例如如果不謹慎使用的話,其大多數(shù)標(biāo)準(zhǔn)的字符串庫函數(shù)有可能被用來進行緩沖區(qū)攻擊或者格式字符串攻擊。但是,由于其靈活性、快速和相對容易掌握,它是一個廣泛使用的編程語言。下面是針對開發(fā)安全的 C 語言程序的一些規(guī)范。避免使用不執(zhí)行邊界檢查的字符串函數(shù),因為它們可能被用來進行緩沖區(qū)溢出攻擊。下面是應(yīng)該避免使用的函數(shù)。同時,也列出了每個函數(shù)相應(yīng)的比較安全的替換方式。? 不使用 strcpy(),使用 strncpy()? 不使用 strcat(),使用 strncat()? 不使用 sprintf(),使用 snprintf()? 不使用 gets(),使用 fgets()在上面的前三個中函數(shù)中,每個替代函數(shù)的“n”表示了使用的緩沖區(qū)的大小。最后一個函數(shù)的“f”,表示格式,它允許用戶指定期望的輸入的格式。這些替換方程強制程序員定義使用的緩沖區(qū)的尺寸以及確定輸入的類型。( Format String Attack)該類攻擊往往與緩沖區(qū)溢出相關(guān),因為它們往往主要利用了某些函數(shù)的假設(shè),例如 sprintf()和 vsprintf()假設(shè)緩沖區(qū)的長度是無限的。然而即使使用 snprintf()替換sprintf()也無法完全保護程序不受格式化字符串的攻擊。這些攻擊通過直接將格式說明符(format specifiers)21 / 47(%d, %s,%n 等)傳遞到輸出函數(shù)接收緩沖區(qū)來進行。例如,以下的代碼就是不安全的:snprintf(buffer, sizeof(buffer), string) 這種情況下,可以在字符串中插入格式說明符來操縱內(nèi)存的棧,來寫入攻擊者的數(shù)據(jù)(這些數(shù)據(jù)中包含小的程序代碼,并可由處理器接著執(zhí)行)。 更多關(guān)于這些攻擊的具體內(nèi)容請見資源章節(jié)。對以上的例子建議使用下面的代碼。snprintf(buffer, sizeof(buffer), “%s”, string) 進行格式字符串攻擊不太容易。首先攻擊者必須能獲得內(nèi)存棧的內(nèi)容情況(或者從應(yīng)用導(dǎo)出或者使用調(diào)試器),然好必須知道如何精確訪問特定的內(nèi)存空間來操縱棧中的變量。 執(zhí)行外部程序推薦使用 exec()函數(shù)而不是 system()函數(shù)來執(zhí)行外部程序。這是因為 system()接收整個命令行的隨機的緩沖區(qū)來執(zhí)行程序。snprintf(buffer, sizeof(buffer), emacs %s, filename)。 system(buffer)。在以上的例子中,可以通過使用分號利用文件名變量在 sehll 中插入額外的命令(例如文件名可以是/etc/hosts。 rm *,這將在顯示/etc/hosts 目錄文
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1