>***讀書筆記第一部分對應原書的第一章,主要介紹了Web應用程序的發展,功能,安全狀況。***
>十幾年的時間,萬維網由純粹的靜態信息倉庫發展為功能強大的應用程序,在這個過程中,多種因素造成了當前應用程序安全保護不足的狀態。
多數應用都面臨一個核心安全問題:即用戶可提交任意輸入。如果無法確認輸入信息的安全性,應用程序就可能會受到各種形式的攻擊。
當前萬維中Web應用程序安全狀況表明,針對Web應用程序的攻擊仍是一個未得到很好解決的嚴重的威脅。
# Web應用程序的發展歷程
早期的萬維網僅由Web站點構成,只是包含靜態文檔的信息庫,隨后人們發明了Web瀏覽器用來檢索和顯示那些文檔,但這些信息只是由服務器單向傳送給瀏覽器,并不需要驗證用戶的合法性,所有用戶同等,提供同樣的信息。
所以當時一個Web站點的安全威脅主要來自于Web服務器系統與相關軟件的(諸多)漏洞。攻擊者入侵站點后并不能得到敏感信息,至多修改一下服務器上的靜態文件,歪曲站點的內容,或者利用服務器本身做一些“非法的事情”。
經過幾十年的發展,而今的萬維網和早期的萬維網早已不可同日而語,Web上的大多數站點實際上就是應用程序,它們功能強大,在服務器與瀏覽器之間進行雙向信息傳送。“注冊,登錄,金融交易,搜索,內容創作”等等這些內容以動態的方式成為解決用戶特殊需求的方案,它們處理諸多信息包括私密和高度敏感的信息,因此,**安全問題變的至關重要:*如果人們認為Web應用程序會將他們的信息泄露給未授權的訪問者,他們就會拒絕這個Web應用程序。***
# Web應用程序的常見功能
**創建Web應用程序的目的是執行可以在線完成的任何有用功能:**
1. 購物(Taobao,JD,Amazon)
2. 社交網絡(BBS,SNS)
3. 微博(Weibo)
4. 博客(Bloggers)
5. 銀行服務(BOC,ICBC)
6. Web搜索(Baidu)
7. Web郵件(QQmail,企業Mail)
8. 交互信息(Dingding,QQ,iMassges)
**企業內部已廣泛使用Web應用程序來支持關鍵業務功能,這類應用程序可以訪問各種高度敏感的數據和功能:**
1. 使用HR應用程序,訪問工資信息,績效反饋。
2. 連接關鍵體系架構的管理接口:Web和郵件服務器。
3. 共享文檔,管理工作流程,項目跟蹤。
4. ERP軟件通過Web瀏覽器訪問。
為降低成本,企業圈內開始推崇所謂“云計算”業務,并將此業務開發交于外包企業實施和托管,將ERP搬至網上。在這些所謂的“云”解決方案中,業務關鍵功能和數據向數目更龐大的潛在攻擊者開發,而組織卻越來越多地依賴于不受其控制的安全防御。
## Web應用程序的優點
1. HTTP是用于訪問萬維網的核心通信協議,它是輕量級的,無須連接,這提供了對通信錯誤的容錯性。這使得用戶可以在任何網絡配置下進行安全通信。
2. 每個Web用戶在其PC端和移動端上都默認裝有瀏覽器,而Web應用程序可以在任何瀏覽器上運行。
3. 現今的Web界面使用標準的導航和輸入控件,這保證了用戶不需要通過學習就可以即時熟悉這些功能。
4. 用于開發Web應用程序的核心技術和語言工具相對簡單,并且有大量的開源代碼和資源可供整合。
# Web應用程序安全
應用程序各不相同,所包含的漏洞也各不相同,許多應用程序是由開發人員獨立開發,還有許多開發人員對自己所編寫的代碼可能引起的安全問題略知一二,于是一些開發人員從未在開發應用時未曾考慮到的攻擊方式在使用過程當中相繼出現了,而新技術的開發也會引入新的漏洞。
針對Web應用程序最嚴重的攻擊,是那些能夠繞到后端系統的無限訪問權限的攻擊。
在Web應用程序的整個發展過程中,直到今天,甚至可預見的未來,攻擊者與防御者的戰斗仍然在繼續,且沒有解決的跡象。
## “本站點是安全的”
***大多數網站聲稱自己使用128位安全套接層(Secure Socket Layer, SSL)技術設計,遵循支付卡行業(PCI)標準,來證明自己的加密協議是無懈可擊的。***
但實際上,大多數Web應用程序不安全,不僅僅是技術應用上的,還有開發人員在基礎設計上的漏洞:
1. 不完善的身份驗證措施
2. 不完善的訪問控制措施
3. SQL注入
4. 跨站點腳本
5. 信息泄露
6. 跨站點請求偽造
SSL在機密性與安全性上是出色的技術,但它的問題在于它并不能抵御直接針對某個應用程序的服務器或客戶端組件的攻擊,而許多成功的攻擊都恰恰屬于這種類型。
所以SSL并不能阻止上述任何漏洞或許多其他使應用程序受到威脅的漏洞。
## 核心安全問題:用戶可提交任意輸入
Web應用程序有個根本性問題,即無法控制客戶端,所以用戶幾乎可向服務器端提交任意輸入。所以應用程序必須假設用戶輸入的都是惡意信息。
**這個核心問題表現在多個方面:**
1. 用戶可干預客戶端與服務器間傳送的所有數據。
2. 用戶可按任何順序發送請求,并可在應用程序要求之外的不同階段不止一次提交或根本不提交參數。
3. 用戶交不限于使用一種Web瀏覽器訪問應用程序,這導致大量各種各樣的工具可以協助攻擊Web應用程序。
**絕大多數針對Web應用程序的攻擊都涉及向服務器提交信息:**
1. 更改隱藏的HTML表單字段提交的產品價格,以更低價格欺詐性購買。
2. 修改在HTTP Cookie中的會話令牌,支持另一個驗證用戶的會話。
3. 利用應用程序處理過程中的邏輯錯誤刪除某些正常提交的數據。
4. 改變由后端數據庫處理的某個輸入,從而注入一個惡意數據庫查詢以訪問敏感數據。
## 關鍵問題因素
1. 不成熟的安全意識
2. 獨立開發
3. 欺騙性的簡化
4. 迅速發展的威脅形勢
5. 資源與時間限制
6. 技術上強其所難
7. 對功能的需求不斷增強
開發人員的技術能力,開發時間的限制,開發資源的有限利用,單一框架多程序開發使用,大量增加第三方插件,為實現功能對數據庫或程序直接進行二次開發而忽視二開的安全措施,以上這些種種行為大大增加了安全問題的出現率。
## 新的安全邊界
Web應用程序的廣泛應用使得典型組織的安全邊界發生了變化,以往我們關注防火墻與防御主機,而現在我們應該更關注Web應用程序本身。
Web應用程序接收用戶輸入的方式多式多樣,數據傳輸的方式也多式多樣,這每一步都是潛在攻擊的關口,尤其是PHP,Java,JS這些語言和平臺的“聚合”,每一個連接方式都成為了攻擊關口。
于是站點的安全邊界從服務器本身延伸到了第三方插件,聚合接口,API,某一行代碼,跨域連接方式。
Web應用程序安全邊界發生變化的另一原因,在于惡意攻擊者利用一個良性的易受攻擊的應用程序攻擊任何訪問它的用戶,并控制用戶的瀏覽器,如果用戶位于企業內部,那么從用戶的可信位置攻擊者可向本網絡改動攻擊。
## Web應用程序安全的未來
目前網絡上的Web應用程序仍然充滿了漏洞,整個行業也沒有統一而成熟的意識。
但隨意著行業的發展,各種漏洞也在被不斷的修復,現有的漏洞也變得更難以發現和利用。
而攻擊目標也由傳統的服務器端應用程序轉向用戶應用程序。
* * * * *
**版權所有,轉載請注明出處。
轉載自** *《黑客攻防技術寶典Web實戰篇:第2版》讀書筆記1:了解Web應用程序 | XDY.ME@Dy大叔的日常*
