日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

如何消除網(wǎng)站安全的七大風(fēng)險(xiǎn)

 software1 2010-05-25


以工作中某項(xiàng)目的安全改善過(guò)程為例,分享了常用網(wǎng)站安 全性的典型問(wèn)題和解決對(duì)策,希望對(duì)網(wǎng)站開(kāi)發(fā)者有借鑒意義。

有過(guò)網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn)的朋友都知道網(wǎng)站安全是構(gòu)建網(wǎng)站時(shí)必 須要考慮的一個(gè)因素,網(wǎng)站安全的重點(diǎn)在于服務(wù)器的安全配置管理以及程序腳本的完善性。值得注意的是,如果服務(wù)器的賬號(hào)和權(quán)限由于管理不善而泄露了,即使技 術(shù)上網(wǎng)站系統(tǒng)再安全,也不可避免會(huì)受到攻擊。

在筆者曾經(jīng)參與過(guò)的一個(gè)項(xiàng)目中,客戶方邀請(qǐng)了專業(yè)的第 三方安全測(cè)試公司進(jìn)行了安全性的全面檢測(cè),同時(shí)也針對(duì)性地進(jìn)行了安全性的改善,特別是在應(yīng)用程序方面。此文將分享改善過(guò)程中的幾個(gè)典型問(wèn)題的分析和解決對(duì) 策,包括SQL注入攻擊、跨站點(diǎn)腳本攻擊、驗(yàn)證碼繞過(guò)等,希望能夠?yàn)榇蠹以诟纳凭W(wǎng)站安全方面的工作提供參考,并采取相應(yīng)的防范措施。


項(xiàng)目背景

該項(xiàng)目使用的技術(shù)和平臺(tái):

OS:Windows 2008 Server, Enterprise Edition 64- bit

Database:Microsoft SQL 2005 Server, Standard Edition

WebServer:IIS7.0

開(kāi)發(fā)平臺(tái):.NET Framework 2.0

考慮到網(wǎng)站安全的跨平臺(tái)和通用性,文中討論時(shí)僅提供對(duì) 應(yīng)策略不使用實(shí)際代碼,這里所有的項(xiàng)目網(wǎng)站用到的域名統(tǒng)一用example.com代替。


改善之前

第三方專業(yè)安全測(cè)試公司進(jìn)行測(cè)試,其中的重點(diǎn)問(wèn)題列表 如下:

未標(biāo)題-2

問(wèn)題1:易受 到SQL注入攻擊

風(fēng)險(xiǎn)攻擊者可以通過(guò)應(yīng)用程序發(fā)送數(shù)據(jù)庫(kù)命令,這些命令將被服 務(wù)器執(zhí)行。這可以用來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行完全控制。這些SQL注入漏洞可以通過(guò)在其中一個(gè)區(qū)域插入“and 7 = 7 -”或“and 8 = 9 -”,并 比較結(jié)果進(jìn)行判斷。

分析SQL注入攻擊是由于服務(wù)器對(duì)參數(shù)檢查不夠,而導(dǎo)致攻擊 者借此獲得敏感信息。因此,需要使用參數(shù)化查詢以確保攻擊者無(wú)法操作數(shù)據(jù)庫(kù)的SQL查詢語(yǔ)句。例如,如果應(yīng)用程序要求輸入名稱,那它應(yīng)該只接受字母字符、 空格和撇號(hào),而不接受任何其他字符。也就是說(shuō),在應(yīng)用程序中的所有輸入域?qū)嵤┓?wù)器端白名單技術(shù)。特別是所有用于SQL語(yǔ)句的輸入域,需要空格的都應(yīng)該用 引號(hào)括起來(lái)。

改善在程序中所有可接受外部參數(shù)的地方進(jìn)行逐一識(shí)別,以過(guò)濾 危險(xiǎn)字符。如在全局函數(shù)中定義“禁止字符串列表”,該表中列出所要過(guò)濾出的SQL攻擊代碼可能包含的字符串。

and |exec |insert |select |delete |update |count | * |chr |mid |master |truncate |char |declare |<|>|’|(|)|{|}

//當(dāng)然可以根據(jù)網(wǎng)站的特點(diǎn)完善和修改本列表

接下來(lái)做如下處理:

未標(biāo)題-1

問(wèn)題2:易受 到跨站點(diǎn)腳本攻擊

風(fēng)險(xiǎn)此漏洞可以被用來(lái)獲取身份驗(yàn)證Cookie,攻擊管理員 賬戶,或使應(yīng)用程序的用戶攻擊其他服務(wù)器和系統(tǒng)。該漏洞可以通過(guò)在某區(qū)域中插入 “<script>alert(‘23389950’);</script>”來(lái)判斷。

分析這也需要在本網(wǎng)站的所有輸入域?qū)嵤┓?wù)器端白名單技術(shù)。 如果需要特殊字符,應(yīng)該轉(zhuǎn)換為更安全的形式。如適用于各種語(yǔ)言的HTML轉(zhuǎn)碼:

  • &應(yīng)轉(zhuǎn)換為 &;
  • “應(yīng)轉(zhuǎn)換為”;
  • ‘應(yīng)轉(zhuǎn)換為&39;
  • >應(yīng)轉(zhuǎn)換為>;
  • <應(yīng)轉(zhuǎn)換為<。

改善除了這些標(biāo)準(zhǔn)的HTML轉(zhuǎn)碼之外,對(duì)于可疑字符串也要進(jìn) 行強(qiáng)化檢查和轉(zhuǎn)化,并進(jìn)一步執(zhí)行以下操作:(1)對(duì)各頁(yè)面的輸入?yún)?shù)進(jìn)行強(qiáng)化檢查;(2)對(duì)原來(lái)只在客戶端判斷的參數(shù),在服務(wù)器端進(jìn)一步強(qiáng)化檢查;(3) 最終提供了全局的轉(zhuǎn)碼和過(guò)濾的函數(shù)。當(dāng)然這需要在性能和擴(kuò)展性以及安全性方面的平衡綜合考慮。

問(wèn)題3:非安 全的CrossDomain.XML文件

風(fēng)險(xiǎn)為解決Flash/Flex系統(tǒng)中的跨域問(wèn)題,提出了 crossdomain.xml跨域策略文件。雖然可以解決跨域問(wèn)題,但是也帶來(lái)了惡意攻擊的風(fēng)險(xiǎn),如果該策略文件里允許訪問(wèn)任何域,就可能允許發(fā)起對(duì)網(wǎng) 絡(luò)服務(wù)器的跨站點(diǎn)請(qǐng)求偽造和跨站點(diǎn)腳本攻擊。比如,不安全Flash應(yīng)用程序可能會(huì)訪問(wèn)本地?cái)?shù)據(jù)和用戶保存的網(wǎng)頁(yè)記錄,甚至傳播病毒和惡意代碼。

分析考慮如何確保只對(duì)提供安全資源的可信域開(kāi)放允許。

改善經(jīng)過(guò)調(diào)查,發(fā)現(xiàn)在程序目錄下的 crossdomain.xml文件里的配置如下:

<?xml version=”1.0″?>

<!DOCTYPE cross-domain-policy SYSTEM ”http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd”>

<cross-domain-policy>

<allow-access-from domain=”*” />

</cross-domain-policy>

文件中的allow-access-from 實(shí)體設(shè) 置為星號(hào)設(shè)置為允許任何域訪問(wèn),將其修改為 <allow-access-from domain=”*.example.com” />, 表示只允許本域訪問(wèn),該問(wèn)題就解決了。

問(wèn)題 4:Flash參數(shù)AllowScript-Access 已設(shè)置為always

風(fēng)險(xiǎn)當(dāng)AllowScriptAccess為always 時(shí),表明嵌入的第三方Flash文件可以執(zhí)行代碼。攻擊者此時(shí)就可以利用該缺陷嵌入任意第三方Flash文件而執(zhí)行惡意
代碼。

分析AllowScriptAccess參數(shù)可以是 “always”、”sameDomain”或“never”。三個(gè)可選值中,“always” 表示Flash文件可以與其嵌入到的 HTML 頁(yè)進(jìn)行 通信,即使該Flash文件來(lái)自不同于HTML頁(yè)的域也可以。當(dāng)參數(shù)為“sameDomain”時(shí),僅當(dāng)Flash文件與其嵌入到的HTML頁(yè)來(lái)自相同的 域時(shí),該Flash文件才能與該HTML頁(yè)進(jìn)行通信,此值是AllowScriptAccess 的默認(rèn)值。而當(dāng)AllowScriptAccess 為 “never”時(shí),F(xiàn)lash文件將無(wú)法與任何HTML頁(yè)進(jìn)行通信。

因此需要將AllowScriptAccess參數(shù)設(shè) 置為“sameDomain”,可以防止一個(gè)域中的Flash文件訪問(wèn)另一個(gè)域的 HTML 頁(yè)內(nèi)的腳本。

改善

<param

name=”allowScriptAccess” value=”always” />

改為

<param

name=”allowScriptAccess” value=“sameDomain” />

問(wèn)題5:網(wǎng)站 后臺(tái)管理通過(guò)不安全鏈接實(shí)施

風(fēng)險(xiǎn)管理訪問(wèn)沒(méi)有強(qiáng)制實(shí)施SSL,這可能允許攻擊者監(jiān)視并修 改用戶和服務(wù)器之間的發(fā)送的包括賬戶憑據(jù)在內(nèi)的所有數(shù)據(jù)。如果攻擊者通過(guò)代理或者路由軟件攔截服務(wù)器和管理員間的通信,敏感數(shù)據(jù)可能被截獲,進(jìn)而管理員賬 戶可能會(huì)受到危害。

分析管理訪問(wèn)沒(méi)有強(qiáng)制實(shí)施SSL,為防止數(shù)據(jù)攔截,管理訪問(wèn) 應(yīng)該強(qiáng)制執(zhí)行HTTPS (SSL3.0)。

改善運(yùn)維對(duì)服務(wù)器進(jìn)行了配置調(diào)整,單獨(dú)配置支持了 SSL3.0訪問(wèn)管理后臺(tái)。

問(wèn)題6:驗(yàn)證 環(huán)節(jié)可以被繞過(guò)

風(fēng)險(xiǎn)用戶發(fā)布信息時(shí),雖然有頁(yè)面的驗(yàn)證碼防止自動(dòng)惡意發(fā)布, 但仍可能被繞過(guò)進(jìn)行自動(dòng)提交。繞過(guò)的方式之一是使用過(guò)濾和識(shí)別軟件,之二是可以利用Cookie或Session信息繞過(guò)驗(yàn)證碼。

分析圖像失真機(jī)制本身不是特別強(qiáng),可以很容易地使用公開(kāi)的過(guò) 濾和識(shí)別軟件來(lái)識(shí)別。生成的圖片也是可以預(yù)測(cè)的,因?yàn)槭褂玫淖址芎?jiǎn)單(只是數(shù)字),建議實(shí)現(xiàn)一個(gè)更強(qiáng)大的驗(yàn)證碼系統(tǒng)。

Cookie或session信息處理有漏洞導(dǎo)致驗(yàn)證 碼被繞過(guò), 確保每一個(gè)鏈接只能取得唯一的驗(yàn)證碼,并確保每個(gè)請(qǐng)求產(chǎn)生并需要一個(gè)新的驗(yàn)證碼。

改善根據(jù)需要增加驗(yàn)證碼的復(fù)雜度,而不只是單數(shù)字。

經(jīng)過(guò)分析發(fā)現(xiàn)是因?yàn)轵?yàn)證碼被存入了Session里, 而開(kāi)發(fā)人員忘記在提交之后清空Session中的驗(yàn)證碼的值,導(dǎo)致驗(yàn)證碼在過(guò)期時(shí)間內(nèi)一直可用,從而可能被利用多次提交。因此在提交后追加了及時(shí)清空驗(yàn)證 碼的操作。

問(wèn)題7:泄露 敏感信息

風(fēng)險(xiǎn)此信息只能用于協(xié)助利用其他漏洞,并不能直接用來(lái)破壞應(yīng) 用程序。網(wǎng)站的robots.txt文件里可以獲得敏感目錄的信息,這可能允許攻擊者獲得有關(guān)應(yīng)用程序內(nèi)部的其他信息,這些信息可能被用來(lái)攻擊其他漏洞。

分析robots.txt不應(yīng)在提供管理界面的信息。如果 robots.txt文件暴露了Web站點(diǎn)結(jié)構(gòu),則需要將敏感內(nèi)容移至隔離位置,以避免搜索引擎機(jī)器人搜索到此內(nèi)容。

改善當(dāng)然robots.txt要根據(jù)SEO的要求來(lái)處理,但 也要同樣注意安全性。如:disallow:/testadmin/,其中testadmin為管理后臺(tái),就被暴露了??梢愿鶕?jù)實(shí)際情況是否必要決定刪除 robots.txt文件或者把敏感目錄單獨(dú)配置禁止搜索引擎搜索。

其他問(wèn)題匯總

除此以外,還有很多其他危害性相對(duì)較低的問(wèn)題,分析如 下。

問(wèn)題:可 能通過(guò)登錄頁(yè)面枚舉出用戶名,因?yàn)楦鶕?jù)賬戶是否存在的錯(cuò)誤信息是不同的。

對(duì)策:修 改錯(cuò)誤信息使之不帶有提示性,如“您輸入的郵箱或密碼不對(duì)!” 并且超過(guò)一定次數(shù)則對(duì)該IP進(jìn)行鎖定。

問(wèn)題:檢 測(cè)到可能泄露敏感信息或被惡意利用的冗余文件,如測(cè)試文件、bak文件、臨時(shí)文件。

對(duì)策:除去服務(wù)器中的相應(yīng)文件。

問(wèn)題:發(fā)現(xiàn)潛在機(jī)密信息,如名為order的文件很容 易被聯(lián)想到用戶訂單。

對(duì)策:避免在文件名中含有完整的敏感詞匯或不要在容易 猜測(cè)到的文件中保存敏感信息,或者限制對(duì)它們的訪問(wèn)。

問(wèn)題:發(fā)現(xiàn)內(nèi)部信息泄露。

對(duì)策:除去代碼中漏刪的內(nèi)部IP地址,內(nèi)部組織,人員 相關(guān)信息等。


共性原因分析

在發(fā)現(xiàn)的問(wèn)題中,71%是與應(yīng)用程序相關(guān)的安全性問(wèn) 題??梢孕薷膽?yīng)用程序相關(guān)的安全性問(wèn)題,因?yàn)樗鼈兪怯蓱?yīng)用程序代碼中的缺陷造成的。29%是基礎(chǔ)結(jié)構(gòu)和平臺(tái)安全性問(wèn)題,可以由系統(tǒng)或網(wǎng)絡(luò)管理員來(lái)修訂“基 礎(chǔ)結(jié)構(gòu)和平臺(tái)安全性問(wèn)題”,因?yàn)檫@些安全性問(wèn)題是由第三方產(chǎn)品中的錯(cuò)誤配置或缺陷造成的。

綜合主要的原因包括但不限于以下三個(gè)方面。

程序方面

  • 未對(duì)用戶輸入正確執(zhí)行危險(xiǎn)字符清 理;
  • Cookie和Session使用 時(shí)安全性考慮不足;
  • HTML注釋中或 Hidden form包含敏感信息;
  • 提供給用戶的錯(cuò)誤信息包含敏感信 息;
  • 程序員在 Web 頁(yè)面上的調(diào)試信 息等沒(méi)有及時(shí)刪除。
  • Web 應(yīng)用程序編程或配置不安 全;

配置方面

  • 在Web目錄中留下的冗余文件沒(méi)有 及時(shí)清理;
  • Web服務(wù)器或應(yīng)用程序服務(wù)器是以 不安全的方式配置的。
  • 安全規(guī)范文檔不夠完善,開(kāi)發(fā)人員的 培訓(xùn)不足;
  • 開(kāi)發(fā)人員的安全相關(guān)經(jīng)驗(yàn)和安全意識(shí) 不足。

對(duì)于這些問(wèn)題 的解決方法-——技術(shù)之外

對(duì)于安全問(wèn)題本身的解決可能只能 case by case ,但為了預(yù)防更多潛在問(wèn)題的引入,技術(shù)之外方面的改善也不容忽視:

1. 對(duì)于開(kāi)發(fā)人員在項(xiàng)目初期即進(jìn)行安全開(kāi)發(fā)的培訓(xùn), 強(qiáng)化安全意識(shí)。

2. 建立用于共享安全經(jīng)驗(yàn)的平臺(tái),將經(jīng)驗(yàn)形成 Checklist作為安全指南文檔。

3. 將成熟的代碼成果提煉出公共安全模塊以備后用。

本次改善之后總結(jié)出一些常用基本安全原則供大家參考, 見(jiàn)“非官方不完整網(wǎng)站開(kāi)發(fā)安全原則”。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多