當(dāng)前位置:首頁 >  站長 >  建站經(jīng)驗(yàn) >  正文

web開發(fā)與web前端開發(fā)

 2017-11-07 08:54  來源: 海瑤seo培訓(xùn)   我來投稿 撤稿糾錯(cuò)

  域名預(yù)訂/競價(jià),好“米”不錯(cuò)過

如今,網(wǎng)站不再僅僅是“互聯(lián)網(wǎng)存在”,也被用于商業(yè)交易和轉(zhuǎn)移敏感數(shù)據(jù)。如此廣泛的使用有助于破解漏洞和開發(fā)技術(shù)的知識(shí)。各種各樣的安全研究表明,攻擊網(wǎng)站以獲取名聲或金錢的趨勢(shì)正在上升。本文?,巗eo工程師介紹了各種Web漏洞和利用它們的攻擊。我們還將學(xué)習(xí)一些可以由系統(tǒng)管理員納入以保護(hù)公司的Web基礎(chǔ)設(shè)施的技術(shù)。

在討論Web服務(wù)器如何破解之前,我們先來看看構(gòu)成完整Web門戶的各種組件。 首先,Web服務(wù)器是通常在端口80上偵聽的服務(wù)??蛻舳塑浖?通常是瀏覽器)連接到端口并發(fā)送HTTP查詢。 Web服務(wù)通過提供所請(qǐng)求的內(nèi)容(如HTML,JavaScript等)進(jìn)行響應(yīng)。在某些情況下,可以將服務(wù)配置為在缺省的端口上運(yùn)行,這是邁向安全的一小步。 Web服務(wù)器還可以托管諸如FTP或NNTP的服務(wù),這些服務(wù)在自己的單獨(dú)的默認(rèn)端口上運(yùn)行。 下圖顯示了Web服務(wù)如何映射到OSI層。 HTTP協(xié)議在第7層工作,而HTTPS(安全套接字層)在第6層工作。

Web服務(wù)和OSI層

現(xiàn)代Web應(yīng)用程序通常不僅僅是以簡單網(wǎng)頁的形式提供內(nèi)容。 業(yè)務(wù)邏輯和數(shù)據(jù)倉儲(chǔ)組件(如數(shù)據(jù)庫服務(wù)器,應(yīng)用程序服務(wù)器和中間件軟件)也用于生成并向網(wǎng)站用戶提供業(yè)務(wù)特定數(shù)據(jù)。 這些組件通常安裝并運(yùn)行在一組單獨(dú)的服務(wù)器上,并且可能共享或不共享存儲(chǔ)空間。 高級(jí)Web應(yīng)用程序代碼可以在內(nèi)部調(diào)用托管在不同服務(wù)器上的Web服務(wù),并將結(jié)果頁面?zhèn)鬟f給客戶端。 Web程序員還使用Cookie來維護(hù)會(huì)話,并在客戶端瀏覽器中存儲(chǔ)特定于會(huì)話的信息。

網(wǎng)頁劫持

破解一個(gè)網(wǎng)站是相當(dāng)容易的。新手可能會(huì)試圖從網(wǎng)站竊取數(shù)據(jù),而專業(yè)人士可能會(huì)因?yàn)槠茐木W(wǎng)站或使用網(wǎng)絡(luò)服務(wù)器傳播病毒而造成嚴(yán)重破壞。與大多數(shù)其他攻擊不同,Web攻擊所用的技術(shù)范圍從第2層到第7層,因此Web服務(wù)器很容易受到各種可能的黑客攻擊。由于防火墻端口必須為Web服務(wù)打開(默認(rèn)情況下是端口80),因此它無法阻止第7層的攻擊,這使得對(duì)Web攻擊的檢測(cè)變得困難。請(qǐng)參考下圖,它顯示了用于形成Web門戶基礎(chǔ)設(shè)施的典型組件。

Web門戶基礎(chǔ)設(shè)施

從安全的角度來看,這些組件中的每一個(gè)都有一些弱點(diǎn),如果被利用,就會(huì)導(dǎo)致Web內(nèi)容的入侵?,F(xiàn)在讓我們?cè)敿?xì)討論一些常見但危險(xiǎn)的攻擊。

DoS和嗅探

由于該網(wǎng)站的IP地址是開放給互聯(lián)網(wǎng)的,因此拒絕服務(wù)攻擊很容易使Web服務(wù)器停機(jī)。類似地,如果在Web設(shè)計(jì)過程中沒有進(jìn)行加密或其他安全措施,那么可以很容易地使用包嗅探器來捕獲純文本用戶id和密碼。幾幾乎所有第2層和第3層攻擊(如數(shù)據(jù)包洪泛,SYN洪泛等)都可能在網(wǎng)站IP和其所在的端口上。

HTTP DoS攻擊

與基于網(wǎng)絡(luò)的拒絕服務(wù)攻擊不同,HTTP DoS攻擊在第7層工作。在這種類型的攻擊中,網(wǎng)站以編程的方式爬行獲取要訪問的頁面列表,在此期間攻擊者還記錄服務(wù)器處理每個(gè)頁面所需的時(shí)間。選擇需要更高處理時(shí)間的頁面,并將多個(gè)HTTP請(qǐng)求發(fā)送到Web服務(wù)器,每個(gè)請(qǐng)求請(qǐng)求其中一個(gè)所選頁面。

為了滿足每個(gè)請(qǐng)求,Web服務(wù)器開始消耗資源。 達(dá)到資源限制后,最終放棄并停止響應(yīng)。眾所周知,攻擊者使用簡單的腳本創(chuàng)建大量的HTTP GET請(qǐng)求來實(shí)現(xiàn)此攻擊。如果網(wǎng)站只包含簡單的靜態(tài)HTML頁面,那么這種攻擊就不會(huì)很有效。但是,如果動(dòng)態(tài)頁面從后端數(shù)據(jù)庫服務(wù)器中提取數(shù)據(jù),那么這種攻擊就會(huì)造成相當(dāng)大的損害。

雖然它可能或不會(huì)導(dǎo)致數(shù)據(jù)竊取,但它肯定會(huì)關(guān)閉網(wǎng)站,造成用戶體驗(yàn)不良,并損害聲譽(yù)。必須部署智能技術(shù)來檢測(cè)和停止此類攻擊,我們將很快了解這些攻擊。

訪問控制開發(fā)

通常,在Web門戶的情況下,用戶會(huì)得到一個(gè)ID和一個(gè)密碼來登錄并執(zhí)行某些功能。門戶管理人員也為維護(hù)和數(shù)據(jù)管理提供了自己的憑證。如果Web服務(wù)和應(yīng)用程序不是從編碼的角度設(shè)計(jì)的,那么就可以利用它們來獲得更高的特權(quán)。

例如,如果Web服務(wù)器未使用最新的安全修補(bǔ)程序進(jìn)行修補(bǔ),這可能導(dǎo)致遠(yuǎn)程代碼執(zhí)行,攻擊者可能會(huì)編寫一個(gè)腳本來利用該漏洞,并訪問服務(wù)器并遠(yuǎn)程控制它。 在某些情況下,可能會(huì)發(fā)生這種情況,因?yàn)闆]有遵循最佳的編碼和安全實(shí)踐,在安全配置中留下空白,并使Web解決方案容易受到攻擊。

表單輸入無效

許多網(wǎng)站使用由網(wǎng)站用戶填寫的表單,并提交給服務(wù)器。 然后,服務(wù)器驗(yàn)證輸入并將其保存到數(shù)據(jù)庫。 驗(yàn)證過程有時(shí)委托給客戶端瀏覽器或數(shù)據(jù)庫服務(wù)器。 如果這些驗(yàn)證不夠強(qiáng)大或沒有正確編程,他們可能會(huì)留下可以被攻擊者利用的安全漏洞。

例如,如果一個(gè)字段如PAN號(hào)碼是強(qiáng)制性的,并且如果重復(fù)條目的驗(yàn)證不能正確完成,則攻擊者可以用偽PAN號(hào)碼以編程方式提交表單,從而以假條目填充數(shù)據(jù)庫。 這最終可以幫助攻擊者種植拒絕服務(wù)(DoS)攻擊,只需查詢頁面,詢問不存在的條目。

代碼挖掘

雖然這與之前的漏洞有點(diǎn)類似,但在破解它的方式上有一些不同。通常,程序員在為各種用戶輸入設(shè)置限制時(shí),會(huì)做出假設(shè)。典型的例子是用戶名不應(yīng)該超過50個(gè)字符,或者數(shù)字值永遠(yuǎn)是正數(shù),等等。

從安全的觀點(diǎn)來看,這些假設(shè)是危險(xiǎn)的,因?yàn)轳斂涂梢岳盟鼈?。例如,通過填充具有100個(gè)字符的名稱字段,從而對(duì)數(shù)據(jù)集施加壓力,或者通過在數(shù)值字段中提供負(fù)整數(shù)來創(chuàng)建不正確的計(jì)算結(jié)果。

上面提到的所有攻擊都是新手攻擊者使用的,遵循好的編程實(shí)踐可以幫助他們停止攻擊?,F(xiàn)在我們來看看技術(shù)先進(jìn)的攻擊,這在今天也很常見。

Cookie中毒

如前所述,cookie是駐留在瀏覽器中的小信息片段(在客戶端計(jì)算機(jī)的硬盤驅(qū)動(dòng)器上),并用于存儲(chǔ)用戶會(huì)話特定的信息。它是一個(gè)cookie,它能記住我們的購物車內(nèi)容、我們的偏好和以前的登錄信息,以便提供豐富的Web體驗(yàn)。

雖然篡改cookie并不是很容易,但是專業(yè)攻擊者可以控制它并操縱其內(nèi)容。 中毒是通過木馬或病毒實(shí)現(xiàn)的,該病毒位于后臺(tái),并持續(xù)偽造cookies以收集用戶的個(gè)人信息并將其發(fā)送給攻擊者。

此外,病毒還可以改變cookie的內(nèi)容,導(dǎo)致嚴(yán)重的問題,例如提交購物車內(nèi)容,以便將購買的商品交付給黑客可訪問的虛擬地址,或讓瀏覽器連接到廣告 服務(wù)器,這有助于攻擊者獲得資金等。如果會(huì)話信息存儲(chǔ)在cookie中,專業(yè)攻擊者可以訪問它并竊取會(huì)話,從而導(dǎo)致中間人的攻擊。

會(huì)話劫持

Web服務(wù)器同時(shí)與多個(gè)瀏覽器進(jìn)行對(duì)話,以接收請(qǐng)求并交付所請(qǐng)求的內(nèi)容。當(dāng)每個(gè)連接被建立時(shí),Web服務(wù)器需要有一種方法來維護(hù)每個(gè)連接的唯一性。它使用會(huì)話令牌來生成動(dòng)態(tài)生成的文本字符串,這些字符串包括IP地址、日期、時(shí)間等。

攻擊者可以通過在網(wǎng)絡(luò)上以編程方式或嗅探,或通過對(duì)受害者計(jì)算機(jī)執(zhí)行客戶端腳本攻擊來竊取該令牌。 一旦被盜,該令牌可用于創(chuàng)建假Web請(qǐng)求并竊取受害者用戶的會(huì)話和信息。

URL查詢字符串篡改

從數(shù)據(jù)庫服務(wù)器中提取數(shù)據(jù)并將其顯示在網(wǎng)頁上的網(wǎng)站經(jīng)常被發(fā)現(xiàn)在主URL中使用查詢字符串。 例如,如果網(wǎng)站URL是// www.seo7.cc /,它可以使用// www.seo7.cc /showdata?field1=10&field2=15作為參數(shù)傳遞field1和field2,并將它們分別 值到數(shù)據(jù)庫,結(jié)果輸出以網(wǎng)頁的形式提供給瀏覽器。

使這個(gè)查詢字符串格式容易暴露,用戶可以編輯和更改超出預(yù)期限制的字段值,或者用垃圾字符填充字段值。 它可以進(jìn)一步導(dǎo)致用戶獲得他們不應(yīng)該獲得的信息。 在最壞的情況下,如果字段值是用戶名和密碼,則只能通過HTTP使用暴力字典攻擊來獲取系統(tǒng)級(jí)訪問權(quán)限。

跨站點(diǎn)腳本

這是Web技術(shù)中最常見的弱點(diǎn),它可以吸引XSS(跨站點(diǎn)腳本)對(duì)所有主要站點(diǎn)和著名站點(diǎn)的攻擊。人們已經(jīng)發(fā)現(xiàn),即使在今天,大量的網(wǎng)站也很容易受到這種攻擊。這個(gè)漏洞是由于不適當(dāng)?shù)木幊虒?shí)踐和在Web基礎(chǔ)結(jié)構(gòu)中無法獲得適當(dāng)?shù)陌踩胧┰斐傻摹?/p>

我們知道,客戶端瀏覽器維護(hù)自己的安全性,不允許任何人訪問網(wǎng)站內(nèi)容和網(wǎng)站Cookie,用戶本身除外。 在這種情況下,Web應(yīng)用程序中的漏洞讓破解者將客戶端代碼注入用戶訪問的頁面。 這段代碼通常使用JavaScript編寫。

要了解這一點(diǎn),請(qǐng)考慮將用戶名作為輸入的頁面,并在屏幕上顯示“歡迎用戶名”。 讓我們假設(shè)輸入框用JavaScript替代,如下所示:

這里,Web頁面可能會(huì)最終執(zhí)行腳本標(biāo)簽,顯示對(duì)話框消息“You are in trouble”。 這可以由攻擊者進(jìn)一步利用,只需中斷cookie,竊取會(huì)話并將該代碼注入受害者用戶的瀏覽器。 一旦這樣做,JavaScript代碼將在受害者的瀏覽器中運(yùn)行,并盡可能造成損害。

SQL注入

如前所述,Web門戶在后端使用數(shù)據(jù)庫服務(wù)器,Web頁面連接到數(shù)據(jù)庫,查詢數(shù)據(jù),并將所獲取的數(shù)據(jù)以Web格式呈現(xiàn)給瀏覽器。如果客戶端上的輸入在以查詢形式發(fā)送到數(shù)據(jù)庫之前沒有經(jīng)過適當(dāng)?shù)倪^濾,就可能發(fā)生SQL注入攻擊。這可能導(dǎo)致操作SQL語句的可能性,以便在數(shù)據(jù)庫上執(zhí)行無效的操作。

這種攻擊的一個(gè)常見示例是由Web應(yīng)用程序訪問的SQL server,其中SQL語句沒有經(jīng)過中間件或驗(yàn)證代碼組件的過濾。這可能導(dǎo)致攻擊者能夠在后端數(shù)據(jù)庫服務(wù)器上創(chuàng)建和執(zhí)行自己的SQL語句,這可能是簡單的SELECT語句來獲取和竊取數(shù)據(jù),或者可能像刪除整個(gè)數(shù)據(jù)表一樣嚴(yán)重。在其他情況下,數(shù)據(jù)可以通過使用惡意的和虛假的內(nèi)容填充記錄集來破壞。

盡管網(wǎng)絡(luò)安全意識(shí)越來越高,但許多網(wǎng)站仍然可以進(jìn)行SQL注入攻擊。

雖然在本文中不可能涵蓋所有可能的攻擊,但讓我們來看看一些不太為人所熟知的攻擊,這些攻擊越來越多地被用于攻擊網(wǎng)站。

緩慢的HTTP攻擊

雖然這一方法與拒絕服務(wù)攻擊類似,但該技術(shù)略有不同。它利用了一個(gè)事實(shí),即每個(gè)HTTP請(qǐng)求都必須由Web服務(wù)器偵聽。每個(gè)Web請(qǐng)求都以一個(gè)名為content-length的字段開頭,它告訴服務(wù)器需要多少字節(jié),并以回車和換行(CRLF)字符組合結(jié)束。

HTTP請(qǐng)求由內(nèi)容長度較大的攻擊者發(fā)起,而不是發(fā)送CRLF來結(jié)束請(qǐng)求,因此通過向Web服務(wù)器發(fā)送非常少量的數(shù)據(jù)來簡單地延遲。 這使得Web服務(wù)器等待尚未到來的更多數(shù)據(jù)來完成請(qǐng)求。 這消耗了Web服務(wù)器的資源。

如果請(qǐng)求延遲到一個(gè)小于服務(wù)器上會(huì)話超時(shí)設(shè)置的點(diǎn),那么多個(gè)這樣的慢請(qǐng)求可以完全消耗資源并創(chuàng)建拒絕服務(wù)攻擊。這可以通過只從一個(gè)瀏覽器創(chuàng)建緩慢和延遲的請(qǐng)求來實(shí)現(xiàn),這從安全的角度來看是很危險(xiǎn)的。

加密開發(fā)

導(dǎo)致了一種幻覺,認(rèn)為一切都是安全的,不幸的是,情況并非如此。許多購物車應(yīng)用程序忘記進(jìn)一步加密cookie內(nèi)容,并將它們放在純文本中。盡管SSL上的數(shù)據(jù)受到SSL的保護(hù),但運(yùn)行客戶端腳本攔截cookie并讀取其內(nèi)容可能會(huì)導(dǎo)致數(shù)據(jù)或會(huì)話被盜。

對(duì)于SSL,現(xiàn)代攻擊者使用工具來檢測(cè)和破壞較弱的密碼算法,從而使SSL保護(hù)失效,盡管這不是很常見。

保護(hù)開源軟件系統(tǒng)

Apache運(yùn)行在centods/red Hat、Ubuntu和Debian上,在嚴(yán)重的FOSS Web基礎(chǔ)架構(gòu)和解決方案中獲得了廣泛的歡迎。第一步是加強(qiáng)Apache Web服務(wù)本身;在Internet上有許多關(guān)于這方面的指南和例子--對(duì)于每個(gè)Linux發(fā)行版,以及示例。

強(qiáng)烈建議禁用除Web服務(wù)端口之外的其他端口,以及停止和禁用不必要的服務(wù)。部署一個(gè)配置良好的防火墻或入侵檢測(cè)設(shè)備是至關(guān)重要的。正如前面提到的,一個(gè)簡單的防火墻是不夠的;因此,需要一個(gè)能夠檢測(cè)Web層攻擊的內(nèi)容過濾防火墻。

保護(hù)Web門戶不僅限于Web服務(wù)器,還可以擴(kuò)展到諸如數(shù)據(jù)庫服務(wù)器,Web服務(wù)等組件。從網(wǎng)絡(luò)安全的角度來看,只允許從前端Web服務(wù)器到數(shù)據(jù)庫的IP連接是一個(gè)很好的 理念。 運(yùn)行rootkit檢測(cè)器,防病毒工具和日志分析器必須是常規(guī)工作,以防止黑客攻擊。

對(duì)于中間件和Web服務(wù)器之間的高級(jí)安全性,還應(yīng)該有一個(gè)更強(qiáng)大的身份驗(yàn)證機(jī)制。應(yīng)該對(duì)cookie進(jìn)行加密和SSL部署,并使用更強(qiáng)的密碼算法。

從編碼的角度來看,如前所述,使用安全編程技術(shù)是至關(guān)重要的,也是遵循最佳的安全措施,如代碼審查和滲透測(cè)試。 還建議使用其他進(jìn)程,如輸入代碼驗(yàn)證,服務(wù)器和數(shù)據(jù)庫端驗(yàn)證。

Web開發(fā)是攻擊網(wǎng)站的常見方式。 由于其易用的可用性和可編程性,F(xiàn)OSS基礎(chǔ)架構(gòu)也容易遭受這種攻擊,因此網(wǎng)絡(luò)管理員必須了解技術(shù)來保護(hù)其基礎(chǔ)架構(gòu)免遭信息丟失或被盜。

申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

相關(guān)標(biāo)簽
web開發(fā)
web前端工程師

相關(guān)文章

熱門排行

信息推薦