安全:什么是Web安全

背景

說(shuō)來(lái)慚愧菜职,6 年的 web 編程生涯,一直沒(méi)有真正系統(tǒng)的學(xué)習(xí) web 安全知識(shí)(認(rèn)證和授權(quán)除外),這個(gè)月看了一本《Web 安全設(shè)計(jì)之道》汉额,書(shū)中的內(nèi)容多是從微軟官方文檔翻譯而來(lái),這本書(shū)的含金量不高榨汤,不過(guò)也不能說(shuō)沒(méi)有收獲蠕搜,本文簡(jiǎn)單記錄一下我學(xué)習(xí) Web 安全方面的筆記。

本文不涉及 IIS件余、Windows 和 SqlServer 的安全管理與配置讥脐,盡量只談編程相關(guān)的安全問(wèn)題遭居。

最簡(jiǎn)單的 Web 物理架構(gòu)

您必須了解 HTTP 協(xié)議啼器,可以閱讀這篇文章:HTTP 協(xié)議詳解,簡(jiǎn)單總結(jié)如下:

瀏覽器和服務(wù)器的通信采用無(wú)狀態(tài)的 HTTP 協(xié)議俱萍。

通過(guò)控制 HTTP 的請(qǐng)求頭端壳,可以控制:客戶端緩存、Cookie枪蘑、請(qǐng)求編碼损谦、相應(yīng)編碼等。

請(qǐng)求內(nèi)容向服務(wù)器提交數(shù)據(jù)(POST 和 GET)岳颇,響應(yīng)內(nèi)容向?yàn)g覽器發(fā)送數(shù)據(jù)照捡。

Cookie 包含在每個(gè)請(qǐng)求和響應(yīng)中,因此客戶端和服務(wù)器都可以訪問(wèn)到话侧。

一般使用 Cookie 來(lái)維護(hù)一個(gè)瀏覽器會(huì)話(也有其他方式)栗精。

攻擊方式總覽

這里有一個(gè)一般性的介紹:網(wǎng)站安全。

Web 軟件安全攻擊防護(hù)

瀏覽器安全攻擊

Cookie 假冒

定義

非期望的修改 Cookie 的值瞻鹏。

場(chǎng)景

服務(wù)器將用戶的授權(quán)信息存儲(chǔ)在 Cookie 中悲立,然后客戶端用這些 Cookie 決定導(dǎo)航的顯示與否。如果有程序惡意的修改了Cookie新博,會(huì)導(dǎo)致權(quán)限提升薪夕。

攻擊方式

注入的 Javascript 代碼。

使用瀏覽器調(diào)試工具赫悄。

本機(jī)病毒等原献。

防護(hù)措施

盡量將 Cookie 設(shè)置為 HttpOnly,瀏覽器偽造不了這種 Cookie埂淮。

防止 Javascript 注入姑隅。

隱藏變量修改

定義

非期望的修改隱藏變量。

場(chǎng)景

訂單的折扣計(jì)算完全依賴客戶端的某個(gè)變量同诫,這個(gè)變量是從服務(wù)器生成的粤策,所有邏輯都在客戶端計(jì)算,服務(wù)器只是接受最后的計(jì)算結(jié)果误窖。如果有程序惡意的修改了變量叮盘,會(huì)繞過(guò)某些業(yè)務(wù)邏輯秩贰。

攻擊方式

注入的 Javascript 代碼。

使用瀏覽器調(diào)試工具柔吼。

保護(hù)措施

防止 Javascript 注入毒费。

關(guān)鍵的功能不要依靠客戶端控制,要采用服務(wù)器控制愈魏。

跨站腳本攻擊

定義

惡意的提交 Javascript 代碼觅玻。

場(chǎng)景

在博客的評(píng)論功能中,如果用戶惡意的提交 Javascript 代碼培漏,假如這些 Javascript 沒(méi)有被過(guò)濾溪厘,極端的情況下,這些代碼會(huì)劫持所有訪問(wèn)此頁(yè)面用戶的會(huì)話牌柄,訪問(wèn)和修改任意數(shù)據(jù)畸悬。

攻擊方式

注入的 Javascript 代碼。

使用瀏覽器調(diào)試工具珊佣。

保護(hù)措施

在服務(wù)器端驗(yàn)證和過(guò)濾惡意輸入蹋宦。

開(kāi)啟?ValidateRequest="true"。

對(duì)輸出使用?this.Server.HtmlEncode咒锻。

服務(wù)器安全攻擊

緩沖區(qū)溢出

定義

某些可能輸入會(huì)導(dǎo)致服務(wù)器堆棧溢出冷冗,這直接致使服務(wù)器不可用。

場(chǎng)景

程序提供了某項(xiàng)計(jì)算密集型的功能惑艇,此功能沒(méi)有限制用戶輸入蒿辙,用戶在有意或無(wú)意之間輸入了一個(gè)非法的值,導(dǎo)致了緩沖區(qū)溢出敦捧。

攻擊方式

非法輸入须板。

保護(hù)措施

在服務(wù)器端驗(yàn)證和過(guò)濾惡意輸入。

采用防偽式編程兢卵。

認(rèn)證逃避

定義

某些 URL 沒(méi)有出現(xiàn)在主頁(yè)導(dǎo)航界面习瑰,系統(tǒng)只對(duì)導(dǎo)航頁(yè)面進(jìn)行了認(rèn)證和授權(quán)管理,這些沒(méi)有出現(xiàn)在導(dǎo)航中的 URL 可能被惡意用戶給分析出來(lái)秽荤,直接進(jìn)行訪問(wèn)甜奄。

場(chǎng)景

用戶管理分為三個(gè)頁(yè)面:List.aspx、New.aspx窃款,程序只對(duì) List.aspx 進(jìn)行認(rèn)證和授權(quán)了课兄,某些用戶直接訪問(wèn) New.aspx 執(zhí)行添加操作。

攻擊方式

直接地址訪問(wèn)晨继。

保護(hù)措施

梳理網(wǎng)站的整體結(jié)構(gòu)烟阐,對(duì)所有頁(yè)面進(jìn)行認(rèn)證和授權(quán)管理。

非法輸入

定義

病從口入,禍從口出蜒茄。很多攻擊方式都是因?yàn)榉欠ㄝ斎雽?dǎo)致的唉擂。

場(chǎng)景

程序只在客戶端對(duì)輸入進(jìn)行了驗(yàn)證,服務(wù)器未做任何驗(yàn)證檀葛,惡意的程序可以繞過(guò)客戶端邏輯直接向服務(wù)器提交非法輸入玩祟,這很容易導(dǎo)致各種安全問(wèn)題。

攻擊方式

注入的 Javascript 代碼屿聋。

使用瀏覽器調(diào)試工具空扎。

保護(hù)措施

在服務(wù)器端驗(yàn)證和過(guò)濾惡意輸入。

防止 Javascript 注入润讥。

授權(quán)逃避

定義

某些 URL 沒(méi)有出現(xiàn)在主頁(yè)導(dǎo)航界面转锈,系統(tǒng)只對(duì)導(dǎo)航頁(yè)面進(jìn)行了認(rèn)證和授權(quán)管理,這些沒(méi)有出現(xiàn)在導(dǎo)航中的 URL 可能被惡意用戶給分析出來(lái)象对,直接進(jìn)行訪問(wèn)黑忱。還有一種可能是:系統(tǒng)只在客戶端進(jìn)行了授權(quán)管理宴抚,服務(wù)器代碼并沒(méi)有進(jìn)行授權(quán)驗(yàn)證勒魔,惡意用戶很容易就可以逃避授權(quán)。

場(chǎng)景

當(dāng)用戶沒(méi)有 Create 權(quán)限的時(shí)候菇曲,系統(tǒng)只是禁用了瀏覽器按鈕冠绢,并沒(méi)有做服務(wù)器授權(quán),然后用戶使用瀏覽器調(diào)試工具啟用了按鈕常潮,就可以執(zhí)行 Create 了弟胀。

攻擊方式

直接地址訪問(wèn)。

修改客戶端代碼喊式。

保護(hù)措施

梳理網(wǎng)站的整體結(jié)構(gòu)孵户,對(duì)所有頁(yè)面進(jìn)行認(rèn)證和授權(quán)管理。

在服務(wù)器進(jìn)行授權(quán)管理岔留。

SQL 注入

定義

對(duì)于和后臺(tái)數(shù)據(jù)庫(kù)產(chǎn)生交互的網(wǎng)頁(yè)夏哭,如果沒(méi)有對(duì)用戶輸入數(shù)據(jù)的合法性進(jìn)行全面的判斷,就會(huì)使應(yīng)用程序存在安全隱患献联。用戶可以在可以提交正常數(shù)據(jù)的URL或者表單輸入框中提交一段精心構(gòu)造的數(shù)據(jù)庫(kù)查詢代碼竖配,使后臺(tái)應(yīng)用執(zhí)行攻擊著的SQL代碼,攻擊者根據(jù)程序返回的結(jié)果里逆,獲得某些他想得知的敏感數(shù)據(jù)进胯,如管理員密碼,保密商業(yè)資料等原押。

場(chǎng)景

服務(wù)器程序使用字符串拼接的方式來(lái)構(gòu)造 SQL 語(yǔ)句胁镐,這就會(huì)導(dǎo)致 SQL 注入攻擊的可能。

攻擊方式

惡意的提交 SQL 片段。

保護(hù)措施

在服務(wù)器端驗(yàn)證和過(guò)濾惡意輸入盯漂。

不要拼湊 SQL 參數(shù)烁巫,采用 DbParameter 設(shè)置參數(shù)。

最小化 SQL Server 訪問(wèn)賬戶的權(quán)限宠能。

異常敏感信息泄露

定義

未處理異常直接顯示到瀏覽器亚隙,這會(huì)導(dǎo)致敏感信息被泄露,對(duì)最終用戶來(lái)說(shuō)违崇,也會(huì)讓他們感覺(jué)系統(tǒng)不夠安全和易用阿弃。

場(chǎng)景

因?yàn)殚_(kāi)發(fā)原因,在某些場(chǎng)景下瀏覽器將后端的異常直接顯示給瀏覽器了羞延,如:NullReferenceException等渣淳。

攻擊方式

在調(diào)用的最上層,為處理掉全部異常伴箩。

在調(diào)用的下層入愧,為封裝合適的異常信息。

保護(hù)措施

定義合理的異常處理策略嗤谚。

異常一定不能跨越邊界直接顯示到瀏覽器棺蛛。

上傳攻擊

定義

用戶惡意的上傳外掛、木馬和其它程序等巩步。

場(chǎng)景

你做了一個(gè)上傳功能旁赊,結(jié)果對(duì)上傳的文件沒(méi)有做好足夠的控制,比如:某些惡意的用戶會(huì)上傳一些惡意的腳本椅野,然后執(zhí)行這些腳本终畅。

攻擊方式

上傳惡意文件。

保護(hù)措施

在服務(wù)器端驗(yàn)證和過(guò)濾惡意輸入竟闪,如:后綴名限制离福。

對(duì)上傳后的文件進(jìn)行掃描和殺毒。

抵賴

定義

某些用戶由于某些原因炼蛤,不愿意承認(rèn)自己執(zhí)行過(guò)某些操作妖爷,當(dāng)然,某些操作可能是他們沒(méi)有意識(shí)的情況下執(zhí)行的鲸湃。

場(chǎng)景

用戶一不小心執(zhí)行的刪除操作赠涮,然后立即發(fā)現(xiàn)自己操作錯(cuò)誤了,然后他打電話給售后暗挑,說(shuō)系統(tǒng)有問(wèn)題笋除。

攻擊方式

界面引導(dǎo)不夠友好,容易導(dǎo)致誤操作炸裆,為了推卸責(zé)任垃它,進(jìn)行抵賴。

用戶惡意的執(zhí)行操作,然后抵賴国拇。

保護(hù)措施

提高界面的易用性洛史。

關(guān)鍵操作的提醒要足夠明顯。

所有操作要留下操作日志酱吝。

數(shù)據(jù)庫(kù)安全攻擊

連接字符串暴漏

定義

數(shù)據(jù)庫(kù)連接字符串中包含用戶名和密碼也殖,這些信息以明文的形式存儲(chǔ)在配置文件中,運(yùn)維和開(kāi)發(fā)人員都能看得到务热,隨著團(tuán)隊(duì)人員的流動(dòng)忆嗜,這些敏感信息也會(huì)暴漏。

場(chǎng)景

直接將連接字符串配置在 Web.Config 中崎岂,而這個(gè)文件沒(méi)有被加密捆毫。

攻擊方式

未加密連接字符串。

未加密配置文件冲甘。

保護(hù)措施

加密連接字符串绩卤。

加密配置文件。

存儲(chǔ)數(shù)據(jù)泄露和篡改

定義

某些敏感信息最終需要被存儲(chǔ)在數(shù)據(jù)庫(kù)中江醇,如果這些信息被存儲(chǔ)為明文濒憋,會(huì)有很多人員可以看到這些信息,極端情況下嫁审,某些黑客攻陷了服務(wù)器跋炕,也可以看到這些數(shù)據(jù)。

場(chǎng)景

為加密密碼律适、關(guān)鍵財(cái)務(wù)信息,稅務(wù)局來(lái)查賬了遏插。

攻擊方式

未加密敏感數(shù)據(jù)捂贿。

加密方法過(guò)于簡(jiǎn)單。

保護(hù)措施

加密敏感數(shù)據(jù)胳嘲。

對(duì)某些數(shù)據(jù)采用不可逆加密厂僧,如:密碼。

對(duì)某些數(shù)據(jù)采用可逆加密了牛,如:財(cái)務(wù)數(shù)據(jù)颜屠。

網(wǎng)絡(luò)安全攻擊

拒絕服務(wù)攻擊

定義

惡意用戶試圖攻擊服務(wù)器、網(wǎng)絡(luò)和系統(tǒng)鹰祸,最終的目的是讓系統(tǒng)不可用甫窟,停止對(duì)外服務(wù)。

場(chǎng)景

惡意用戶在嘗試并發(fā)的無(wú)限制的向服務(wù)器發(fā)送請(qǐng)求蛙婴,試圖讓服務(wù)器的負(fù)載達(dá)到最大粗井,最終讓系統(tǒng)停止對(duì)外服務(wù)。

攻擊方式

攻擊網(wǎng)絡(luò)。

攻擊服務(wù)器浇衬。

攻擊系統(tǒng)懒构。

保護(hù)措施

在程序級(jí)別,識(shí)別并攔截惡意的請(qǐng)求耘擂。

購(gòu)買(mǎi)第三方安全軟件胆剧。

傳輸數(shù)組泄露、篡改

定義

惡意的代理服務(wù)器或路由器攔截用戶的請(qǐng)求醉冤,讀取或修改敏感數(shù)據(jù)赞赖。

場(chǎng)景

您在咖啡館發(fā)現(xiàn)了一個(gè)免費(fèi)的 WIFI,然后偷偷的接入了冤灾,您還暗自高興前域,當(dāng)您使用這個(gè)免費(fèi)的 WIFI 進(jìn)行網(wǎng)上沖浪的時(shí)候,您的各種信息都會(huì)被 WIFI 給攔截韵吨,如果是惡意的用戶匿垄,結(jié)果可想而知。

攻擊方式

綁架路由器归粉。

免費(fèi) WIFI 騙局椿疗。

為加密的傳輸協(xié)議。

未加密的傳輸數(shù)據(jù)糠悼。

保護(hù)措施

加強(qiáng)客戶端路由的安全管理届榄。

慎重的選擇代理服務(wù)器。

使用安全的傳輸協(xié)議倔喂,如:SSL铝条。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市席噩,隨后出現(xiàn)的幾起案子班缰,更是在濱河造成了極大的恐慌,老刑警劉巖悼枢,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件埠忘,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡馒索,警方通過(guò)查閱死者的電腦和手機(jī)莹妒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)绰上,“玉大人旨怠,你說(shuō)我怎么就攤上這事∮嫫冢” “怎么了运吓?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵渴邦,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我拘哨,道長(zhǎng)谋梭,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任倦青,我火速辦了婚禮瓮床,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘产镐。我一直安慰自己隘庄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布癣亚。 她就那樣靜靜地躺著丑掺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪述雾。 梳的紋絲不亂的頭發(fā)上街州,一...
    開(kāi)封第一講書(shū)人閱讀 52,682評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音玻孟,去河邊找鬼唆缴。 笑死,一個(gè)胖子當(dāng)著我的面吹牛黍翎,可吹牛的內(nèi)容都是我干的面徽。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼匣掸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼趟紊!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起旺聚,我...
    開(kāi)封第一講書(shū)人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤织阳,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后砰粹,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡造挽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年碱璃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饭入。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嵌器,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谐丢,到底是詐尸還是另有隱情爽航,我是刑警寧澤蚓让,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站讥珍,受9級(jí)特大地震影響历极,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜衷佃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一趟卸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧氏义,春花似錦锄列、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至克婶,卻和暖如春筒严,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鸠补。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工萝风, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人紫岩。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓规惰,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親泉蝌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子歇万,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容