當前位置:首頁 » 網頁前端 » web安全csdn
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

web安全csdn

發布時間: 2022-06-06 12:27:21

Ⅰ 如何設計安全的用戶登錄功能

1、首先第一步就是要進行登錄用戶的視圖代碼編寫,然後就是進行設置name屬性即可。


Ⅱ Web滲透技術及實戰案例解析的內容簡介

本書從Web滲透的專業角度,結合網路安全中的實際案例,圖文並茂地再現Web滲透的精彩過程。本書共分7章,由淺入深地介紹和分析了目前網路流行的Web滲透攻擊方法和手段,並結合作者多年的網路安全實踐經驗給出了相對應的安全防範措施,對一些經典案例還給出了經驗總結和技巧,通過閱讀本書可以快速掌握目前Web滲透的主流技術。本書最大的特色就是實用和實戰性強,思維靈活。內容主要包括Web滲透必備技術、Google黑客技術、文件上傳滲透技術、sql注入、高級滲透技術、0day攻擊和Windows提權與安全防範等。
前言
經過近一年時間的艱辛苦戰,終於將本書完成。本書是我寫的第三本書,主要從Web滲透的專業角度來討論網路安全的攻防技術,盡可能地再現Web滲透場景,每一個小節都代表某一個場景,此書是我工作數年的總結,最後終於不辱使命將所有成果放在本書中與大家分享。
本書是在我上一本書《黑客攻防及實戰案例解析》基礎上的又一本安全類書籍,主要討論Web滲透攻防技術。攻擊與防護是辯證統一的關系,掌握了攻擊技術,也就掌握了防護技術。Web滲透是網路安全攻防的最熱門技術,通過滲透Web伺服器,利用已有信息,逐漸深入公司或者大型網路,最終完成滲透目標。
最近二年來網路安全特別火爆,可以說從事網路安全還是蠻有前途的職業之一。目前網路安全界非常缺人,特別是在2011年CSDN、天涯等大型網站用戶資料庫泄露後,各大公司對安全人士求賢若渴,掌握網路安全攻防技術,擁有豐富經驗的從業人員,年薪一般在10萬以上,能夠獨立挖掘漏洞的從業人員年薪一般在20萬以上。其實Web安全滲透技術也不是那麼高不可攀,只要自己鎖定這個方向,持之以恆,不斷地進行試驗和研究,終將成為一名高手,而且安全攻防技術還跟學歷無關,很多技術高手都沒有上過大學。
Web滲透攻防技術可以通過以下方法來自學,一是通過安全站點漏洞更新通告、安全文章,了解漏洞的形成原理和利用過程,掌握漏洞的核心原理;二是在本地搭建試驗環境進行實際測試,掌握漏洞利用方法;三是在互聯網上對存在漏洞的站點進行實際操作,在真實環境下進行驗證,提出修補漏洞的方法。在技術研究的同時還要做好記錄,總結失敗和成功的方法,積累技巧和經驗,我曾經看過一位牛人,Web漏洞收集超過10GB數據!
本書以Web滲透攻擊與防禦為主線,主要通過典型的滲透實際案例來介紹Web滲透和防禦技術,在每一個小節中除了技術原理外,還對這些技術進行總結和提煉,掌握和理解這些技術後,讀者在遇到類似的滲透場景時可以自己去進行滲透。本書採用最為通俗易懂的圖文解說,按照書中的步驟即可還原當時的攻防情景。通過閱讀本書,初學者可以很快掌握Web攻防的流程、最新的一些技術和方法,有經驗的讀者可以在技術上更上一層樓,使攻防技術從理論和實踐中更加系統化,同時可以使用本書中介紹的一些防禦方法來加固伺服器系統。
本書共分為7章,由淺入深,依照Web攻防的一些技術特點安排內容,每一小節都是一個具體Web攻防技術的典型應用,同時結合案例給予講解,並給出一些經典的總結。本書主要內容安排如下。
第1章 Web滲透必備技術
介紹Web滲透的一些必備的基本知識,創建和使用VPN隱藏自己,獲取操作系統密碼、破解MD5密碼、破解MySQL密碼、資料庫還原等,這些技術可以在Web滲透中使用,也可以在網路管理中使用。
第2章 Google——我愛你又恨你
利用Google等搜索引擎技術來獲取信息,輔助Web滲透,在某些場景中往往會起到意想不到的效果,也被稱為Nday攻擊(0day後的數天持續攻擊)。在進行Web攻防技術研究的同時,可以通過Google來進行實際演練,最好的效果就是網上爆出漏洞後利用Goolge技術來抓肉雞。
第3章 都是上傳惹的禍
上傳是Web滲透中最容易獲得WebShell的捷徑之一,在本章中介紹了如何利用WebEditor、FCKeditor、CuteEditor等典型編輯器漏洞來獲取WebShell的方法,同時還對登錄繞過後通過Flash上傳、文件上傳等方法來獲取WebShell進行探討。
第4章 SQL注入——滲透主樂章
SQL注入是Web滲透的核心技術,本章主要介紹使用SQL注入方法獲取WebShell,穿插介紹使用多種掃描軟體、攻擊工具來滲透Web伺服器並提權。
第5章 高級滲透技術
本章介紹如何充分利用多種技術組合,結合巧妙的思路,最終成功滲透一些高難度的Web伺服器。
第6章 0day攻擊
0day是Web滲透中的「神器」,幾乎是無往不勝,所向披靡,本章介紹利用Discuz!6.0、Discuz!7.2、Discuz!NT、PHP168、WordPress、Citrix、Art2008cms、Phpcms2008sp4等0day滲透Web伺服器的一些方法。
第7章 Windows提權與安全防範
獲取WebShell後,獲得伺服器許可權一直是Web滲透的終極目標,本章對主流的一些提權方法進行介紹,掌握這些方法和原理後,可以舉一反三,觸類旁通。最後還對如何設置一個安全「變態」的Web伺服器進行介紹。
雖然本書內容已經很豐富與完整,但仍然無法涵蓋所有的Web滲透的技術,但通過本書的學習,可以快速了解和掌握Web滲透技術,加固自己的伺服器。本書的目的是通過Web滲透技術並結合一些案例來探討網路安全,更好地加固Web伺服器、遠離黑客的威脅。

Ⅲ 誰有《web安全深度剖析》pdf

這個?

Ⅳ 白帽子講Web安全的前言

在2010年年中的時候,博文視點的張春雨先生找到我,希望我可以寫一本關於雲計算安全的書。當時雲計算的概念正如日中天,但市面上關於雲計算安全應該怎麼做卻缺乏足夠的資料。我由於工作的關系接觸這方面比較多,但考慮到雲計算的未來尚未清晰,以及其他的種種原因,婉拒了張春雨先生的要求,轉而決定寫一本關於Web安全的書。 我對安全的興趣起源於中學時期。當時在盜版市場買到了一本沒有書號的黑客手冊,其中coolfire 的黑客教程令我印象深刻。此後在有限的能接觸到互聯網的機會里,我總會想方設法地尋找一些黑客教程,並以實踐其中記載的方法為樂。
在2000年的時候,我進入了西安交通大學學習。在大學期間,最大的收獲,是學校的計算機實驗室平時會對學生開放。當時上網的資費仍然較貴,父母給我的生活費里,除了留下必要的生活所需費用之外,幾乎全部投入在這里。也是在學校的計算機實驗室里,讓我迅速在這個領域中成長起來。
大學期間,在父母的資助下,我擁有了自己的第一台個人電腦,這加快了我成長的步伐。與此同時,我和一些互聯網上志同道合的朋友,一起建立了一個技術型的安全組織,名字來源於我當時最喜愛的一部動漫:「幻影旅團」。歷經十餘載,「幻影」由於種種原因未能得以延續,但它卻曾以論壇的形式培養出了當今安全行業中非常多的頂尖人才。這也是我在這短短二十餘載人生中的最大成就與自豪。
得益於互聯網的開放性,以及我親手締造的良好技術交流氛圍,我幾乎見證了全部互聯網安全技術的發展過程。在前5年,我投入了大量精力研究滲透測試技術、緩沖區溢出技術、網路攻擊技術等;而在後5年,出於工作需要,我把主要精力放在了對Web安全的研究上。 發生這種專業方向的轉變,是因為在2005年,我在一位摯友的推薦下,加入了阿里巴巴。加入的過程頗具傳奇色彩,在面試的過程中主管要求我展示自己的能力,於是我遠程關閉了阿里巴巴內網上游運營商的一台路由設備,導致阿里巴巴內部網路中斷。事後主管立即要求與運營商重新簽訂可用性協議。
大學時期的興趣愛好,居然可以變成一份正經的職業(當時很多大學都尚未開設網路安全的課程與專業),這使得我的父母很震驚,同時也更堅定了我自己以此作為事業的想法。
在阿里巴巴我很快就嶄露頭角,曾經在內網中通過網路嗅探捕獲到了開發總監的郵箱密碼;也曾經在壓力測試中一瞬間癱瘓了公司的網路;還有好幾次,成功獲取到了域控伺服器的許可權,從而可以以管理員的身份進入任何一位員工的電腦。
但這些工作成果,都遠遠比不上那厚厚的一摞網站安全評估報告讓我更有成就感,因為我知道,網站上的每一個漏洞,都在影響著成千上萬的用戶。能夠為百萬、千萬的互聯網用戶服務,讓我倍感自豪。當時,Web正在逐漸成為互聯網的核心,Web安全技術也正在興起,於是我義無返顧地投入到對Web安全的研究中。
我於2007年以23歲之齡成為了阿里巴巴集團最年輕的技術專家。雖未有官方統計,但可能也是全集團里最年輕的高級技術專家,我於2010年獲此殊榮。在阿里巴巴,我有幸見證了安全部門從無到有的建設過程。同時由於淘寶、支付寶草創,尚未建立自己的安全團隊,因此我有幸參與了淘寶、支付寶的安全建設,為他們奠定了安全開發框架、安全開發流程的基礎。 當時,我隱隱地感覺到了互聯網公司安全,與傳統的網路安全、信息安全技術的區別。就如同開發者會遇到的挑戰一樣,有很多問題,不放到一個海量用戶的環境下,是難以暴露出來的。由於量變引起質變,所以管理10台伺服器,和管理1萬台伺服器的方法肯定會有所區別;同樣的,評估10名工程師的代碼安全,和評估1000名工程師的代碼安全,方法肯定也要有所不同。
互聯網公司安全還有一些鮮明的特色,比如注重用戶體驗、注重性能、注重產品發布時間,因此傳統的安全方案在這樣的環境下可能完全行不通。這對安全工作提出了更高的要求和更大的挑戰。
這些問題,使我感覺到,互聯網公司安全可能會成為一門新的學科,或者說應該把安全技術變得更加工業化。可是我在書店中,卻發現安全類目的書,要麼是極為學術化的(一般人看不懂)教科書,要麼就是極為娛樂化的(比如一些「黑客工具說明書」類型的書)說明書。極少數能夠深入剖析安全技術原理的書,以我的經驗看來,在工業化的環境中也會存在各種各樣的問題。
這些問題,也就促使我萌發了一種寫一本自己的書,分享多年來工作心得的想法。它將是一本闡述安全技術在企業級應用中實踐的書,是一本大型互聯網公司的工程師能夠真正用得上的安全參考書。因此張春雨先生一提到邀請我寫書的想法時,我沒有做過多的思考,就答應了。
Web是互聯網的核心,是未來雲計算和移動互聯網的最佳載體,因此Web安全也是互聯網公司安全業務中最重要的組成部分。我近年來的研究重心也在於此,因此將選題范圍定在了Web安全。但其實本書的很多思路並不局限於Web安全,而是可以放寬到整個互聯網安全的方方面面之中。
掌握了以正確的思路去看待安全問題,在解決它們時,都將無往而不利。我在2007年的時候,意識到了掌握這種正確思維方式的重要性,因此我告知好友:安全工程師的核心競爭力不在於他能擁有多少個0day,掌握多少種安全技術,而是在於他對安全理解的深度,以及由此引申的看待安全問題的角度和高度。我是如此想的,也是如此做的。
因此在本書中,我認為最可貴的不是那一個個工業化的解決方案,而是在解決這些問題時,背後的思考過程。我們不是要做一個能夠解決問題的方案,而是要做一個能夠「漂亮地」解決問題的方案。這是每一名優秀的安全工程師所應有的追求。 然而在當今的互聯網行業中,對安全的重視程度普遍不高。有統計顯示,互聯網公司對安全的投入不足收入的百分之一。
在2011年歲末之際,中國互聯網突然捲入了一場有史以來最大的安全危機。12月21日,國內最大的開發者社區CSDN被黑客在互聯網上公布了600萬注冊用戶的數據。更糟糕的是,CSDN在資料庫中明文保存了用戶的密碼。接下來如同一場盛大的交響樂,黑客隨後陸續公布了網易、人人、天涯、貓撲、多玩等多家大型網站的資料庫,一時間風聲鶴唳,草木皆兵。
這些數據其實在黑客的地下世界中已經輾轉流傳了多年,牽扯到了一條巨大的黑色產業鏈。這次的偶然事件使之浮出水面,公之於眾,也讓用戶清醒地認識到中國互聯網的安全現狀有多麼糟糕。
以往類似的事件我都會在博客上說點什麼,但這次我保持了沉默。因為一來知道此種狀況已經多年,網站只是在為以前的不作為而買單;二來要解決「拖庫」的問題,其實是要解決整個互聯網公司的安全問題,遠非保證一個資料庫的安全這么簡單。這不是通過一段文字、一篇文章就能夠講清楚的。但我想最好的答案,可以在本書中找到。
經歷這場危機之後,希望整個中國互聯網,在安全問題的認識上,能夠有一個新的高度。那這場危機也就物有所值,或許還能藉此契機成就中國互聯網的一場安全啟蒙運動。
這是我的第一本書,也是我堅持自己一個人寫完的書,因此可以在書中盡情地闡述自己的安全世界觀,且對書中的任何錯漏之處以及不成熟的觀點都沒有可以推卸責任的借口。
由於工作繁忙,寫此書只能利用業余時間,交稿時間多次推遲,深感寫書的不易。但最終能成書,則有賴於各位親朋的支持,以及編輯的鼓勵,在此深表感謝。本書中很多地方未能寫得更為深入細致,實乃精力有限所致,尚請多多包涵。 在安全圈子裡,素有「白帽」、「黑帽」一說。
黑帽子是指那些造成破壞的黑客,而白帽子則是研究安全,但不造成破壞的黑客。白帽子均以建設更安全的互聯網為己任。
我於2008年開始在國內互聯網行業中倡導白帽子的理念,並聯合了一些主要互聯網公司的安全工程師,建立了白帽子社區,旨在交流工作中遇到的各種問題,以及經驗心得。
本書名為《白帽子講Web安全》,即是站在白帽子的視角,講述Web安全的方方面面。雖然也剖析攻擊原理,但更重要的是如何防範這些問題。同時也希望「白帽子」這一理念,能夠更加的廣為人知,為中國互聯網所接受。 全書分為4大篇共18章,讀者可以通過瀏覽目錄以進一步了解各篇章的內容。在有的章節末尾,還附上了筆者曾經寫過的一些博客文章,可以作為延伸閱讀以及本書正文的補充。
第一篇 我的安全世界觀是全書的綱領。在此篇中先回顧了安全的歷史,然後闡述了筆者對安全的看法與態度,並提出了一些思考問題的方式以及做事的方法。理解了本篇,就能明白全書中所涉及的解決方案在抉擇時的取捨。
第二篇 客戶端腳本安全就當前比較流行的客戶端腳本攻擊進行了深入闡述。當網站的安全做到一定程度後,黑客可能難以再找到類似注入攻擊、腳本執行等高風險的漏洞,從而可能將注意力轉移到客戶端腳本攻擊上。
客戶端腳本安全與瀏覽器的特性息息相關,因此對瀏覽器的深入理解將有助於做好客戶端腳本安全的解決方案。
如果讀者所要解決的問題比較嚴峻,比如網站的安全是從零開始,則建議跳過此篇,先閱讀下一篇「伺服器端應用安全」,解決優先順序更高的安全問題。
第三篇 伺服器端應用安全就常見的伺服器端應用安全問題進行了闡述。這些問題往往能引起非常嚴重的後果,在網站的安全建設之初需要優先解決這些問題,避免留下任何隱患。
第四篇 互聯網公司安全運營提出了一個大安全運營的思想。安全是一個持續的過程,最終仍然要由安全工程師來保證結果。
在本篇中,首先就互聯網業務安全問題進行了一些討論,這些問題對於互聯網公司來說有時候會比漏洞更為重要。
在接下來的兩章中,首先闡述了安全開發流程的實施過程,以及筆者積累的一些經驗。然後談到了公司安全團隊的職責,以及如何建立一個健康完善的安全體系。
本書也可以當做一本安全參考書,讀者在遇到問題時,可以挑選任何所需要的章節進行閱讀。 感謝我的妻子,她的支持是對我最大的鼓勵。本書最後的成書時日,是陪伴在她的病床邊完成的,我將銘記一生。
感謝我的父母,是他們養育了我,並一直在背後默默地支持我的事業,使我最終能有機會在這里寫下這些話。
感謝我的公司阿里巴巴集團,它營造了良好的技術與實踐氛圍,使我能夠有今天的積累。同時也感謝在工作中一直給予我幫助和鼓勵的同事、上司,他們包括但不限於:魏興國、湯城、劉志生、侯欣傑、林松英、聶萬全、謝雄欽、徐敏、劉坤、李澤洋、肖力、葉怡愷。
感謝季昕華先生為本書作序,他一直是所有安全工作者的楷模與學習的對象。
也感謝博文視點的張春雨先生以及他的團隊,是他們的努力使本書最終能與廣大讀者見面。他們的專業意見給了我很多的幫助。
最後特別感謝我的同事周拓,他對本書提出了很多有建設性的意見。
吳翰清
2012年1月於杭州

Ⅳ java工作流引擎中,哪個在市面上用得最多

一起來看看java快速開發框架工作流引擎快速開發平台。 希望您能從中找到適合您自己的流程引擎。

Activiti是由jBPM 的創建Tom Baeyen離JBoss之後建立的項目,構建在開發 jBPM 版本1到4時積累的多年經驗的基礎之上,旨在創建下一代的 BPM 解決方案。文檔豐富,csdn有相應專欄,並且國人貢獻了一本《activiti實戰》詳細地講解了基於activiti的開發內容,網上教程資源豐富。Activiti上手比較快,界面也比較簡潔、直觀,學習周期相對較短。

官方提供webapp war包,部署在Tomcat下可快速操作和了解activiti,esclipse提供支持activiti項目的ide插件,總的來說環境支持良好。

代碼量大,核心代碼改動難度較大,但提供了完整的技術文檔,架構良好,網上開發文檔較多,一定上降低了二次開發的難度。

支持,用戶體驗好,但是流程設計器是英文版,還需要漢化。

支持多種表單:動態表單,外置表單,普通表單,但表單設計未集成,需要自己集成表單設計。

支持絕大部分工作流功能,符合中國國情的審批流程需要在此基礎上進行開發。

JBPM(Java Business Process Management):JAVA業務流程管理,是一個可擴展、靈活、開源的流程引擎, 它可以運行在獨立的伺服器上或者嵌入任何Java應用中。

1、jBPM3是一個完整的工作流系統實現,面向開發人員,目的在於簡化對組織核心流程進行支撐的軟體創建,不支持標准。

2、jBPM4引入PVM,使其擁有更強大的擴展性,同時增加BPMS特性,這些特性包括了對BPMN的支持、面向業務人員的Web建模器和簡單統計分析功能的加入。

3、jBPM5基於原先的Drools Flow,支持BPMN,通過與Drools的合並支持BAM,通過內容倉庫增加對流程可視化的支持。由於放棄了jBPM4的PVM,引擎的可擴展性受到損害,並且不再支持jPDL。

XJR快速開發平台可視化開發,高效快速,開發成本低。兼容強,支持多種資料庫,基於B/S架構,純瀏覽器應用,只需要拖拽組件,拼接流程,就能實現各層的審批。面向服務介面設計,容易整合企業現有的資源。前後端分離設計,採用shiro許可權驗證,通過簡單配置就可以實現功能許可權和數據許可權。開源級代碼,二次擴展強。

XJR快速開發平台技術選型

使用目前流行的多種web技術,包括springboot, JPA,Druid, Activiti,Lombok,swagger,poi,WebSocket,Jquery,BootStrap, maven,Jenkins 等等,支持多種資料庫MySQL, Oracle, sqlserver等。 分層設計:使用分層設計,分為,service,Controller,view層,層次清楚,低耦合,高內聚。 安全考慮:嚴格遵循了web安全的規范,前後台雙重驗證,參數編碼傳輸,密碼md5加密存儲,shiro許可權驗證,從根本上避免了SQL注入,XSS攻擊,CSRF攻擊等常見的web攻擊手段。

模塊功能

功能模塊:開發向導、代碼 生成器,商業智能、工作流、報表管理、移動端開發、作業計劃、多語言、數據源管理、企業微信、釘釘、消息管理,菜單 管理,用戶管理,機構管理,角色管理,區域管理,字典管理,日誌查詢等基礎模塊。

Ⅵ 誰來幫幫我!

下面是PHP5中PHP.INI中文詳細配置,你試試

;;;;;;;;;;;;;;
;; Apache ;;
;;;;;;;;;;;;;;
[Apache]
; 僅在將PHP作為Apache模塊時才有效。

engine = On
; 是否啟用PHP解析引擎。
; 可以在httpd.conf中基於目錄或者虛擬主機來打開或者關閉PHP解析引擎。

last_modified = Off
; 是否在Last-Modified應答頭中放置該PHP腳本的最後修改時間。

xbithack = Off
; 是否不管文件結尾是什麼,都作為PHP可執行位組來解析。

child_terminate = Off
; PHP腳本在請求結束後是否允許使用apache_child_terminate()函數終止子進程。
; 該指令僅在UNIX平台上將PHP安裝為Apache1.3的模塊時可用。其他情況下皆不存在。

;;;;;;;;;;;;;;;
;; PHP核心 ;;
;;;;;;;;;;;;;;;

[PHP-Core-DateTime]
; 前四個配置選項目前僅用於date_sunrise()和date_sunset()函數。

date.default_latitude = 31.7667
; 默認緯度

date.default_longitude = 35.2333
; 默認經度

date.sunrise_zenith = 90.583333
; 默認日出天頂

date.sunset_zenith = 90.583333
; 默認日落天頂

date.timezone =
; 未設定TZ環境變數時用於所有日期和時間函數的默認時區。
; 中國大陸應當使用"PRC"
; 應用時區的優先順序為:
; 1. 用date_default_timezone_set()函數設定的時區(如果設定了的話)
; 2. TZ 環境變數(如果非空的話)
; 3. 該指令的值(如果設定了的話)
; 4. PHP自己推測(如果操作系統支持)
; 5. 如果以上都不成功,則使用 UTC

[PHP-Core-Assert]

assert.active = On
; 是否啟用assert()斷言評估

assert.l = Off
; 是否在發生失敗斷言時中止腳本的執行

assert.callback =
; 發生失敗斷言時執行的回調函數

assert.quiet_eval = Off
; 是否使用安靜評估(不顯示任何錯誤信息,相當於error_reporting=0)。
; 若關閉則在評估斷言表達式的時候使用當前的error_reporting指令值。

assert.warning = On
; 是否對每個失敗斷言都發出警告

[PHP-Core-SafeMode]
; 安全模式是為了解決共享伺服器的安全問題而設立的。
; 但試圖在PHP層解決這個問題在結構上是不合理的,
; 正確的做法應當是修改web伺服器層和操作系統層。
; 因此在PHP6中廢除了安全模式,並打算使用open_basedir指令取代之。

safe_mode = Off
;SYS
; 是否啟用安全模式。
; 打開時,PHP將檢查當前腳本的擁有者是否和被操作的文件的擁有者相同,
; 相同則允許操作,不同則拒絕操作。

safe_mode_gid = Off
;SYS
; 在安全模式下,默認在訪問文件時會做UID比較檢查。
; 但有些情況下嚴格的UID檢查反而是不適合的,寬松的GID檢查已經足夠。
; 如果你想將其放寬到僅做GID比較,可以打開這個參數。

safe_mode_allowed_env_vars = "PHP_"
;SYS
; 在安全模式下,用戶僅可以更改的環境變數的前綴列表(逗號分隔)。
; 允許用戶設置某些環境變數,可能會導致潛在的安全漏洞。
; 注意: 如果這一參數值為空,PHP將允許用戶更改任意環境變數!

safe_mode_protected_env_vars = "LD_LIBRARY_PATH"
;SYS
; 在安全模式下,用戶不能更改的環境變數列表(逗號分隔)。
; 這些變數即使在safe_mode_allowed_env_vars指令設置為允許的情況下也會得到保護。

safe_mode_exec_dir = "/usr/local/php/bin"
;SYS
; 在安全模式下,只有該目錄下的可執行程序才允許被執行系統程序的函數執行。
; 這些函數是:system, escapeshellarg, escapeshellcmd, exec, passthru,
; proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, shell_exec

safe_mode_include_dir =
;SYS
; 在安全模式下,該組目錄和其子目錄下的文件被包含時,將跳過UID/GID檢查。
; 換句話說,如果此處的值為空,任何UID/GID不符合的文件都不允許被包含。
; 這里設置的目錄必須已經存在於include_path指令中或者用完整路徑來包含。
; 多個目錄之間用冒號(Win下為分號)隔開。
; 指定的限制實際上是一個前綴,而非一個目錄名,
; 也就是說"/dir/incl"將允許訪問"/dir/include"和"/dir/incls"
; 如果您希望將訪問控制在一個指定的目錄,那麼請在結尾加上斜線。

sql.safe_mode = Off
;SYS
; 是否使用SQL安全模式。
; 如果打開,指定默認值的資料庫連接函數將會使用這些默認值代替支持的參數。
; 對於每個不同資料庫的連接函數,其默認值請參考相應的手冊頁面。

[PHP-Core-Safe]

allow_url_fopen = On
;ini
; 是否允許打開遠程文件

allow_url_include = Off
;SYS
; 是否允許include/require遠程文件。

disable_classes =
;ini
; 該指令接受一個用逗號分隔的類名列表,以禁用特定的類。

disable_functions =
;ini
; 該指令接受一個用逗號分隔的函數名列表,以禁用特定的函數。

enable_dl = On
;SYS
; 是否允許使用dl()函數。dl()函數僅在將PHP作為apache模塊安裝時才有效。
; 禁用dl()函數主要是出於安全考慮,因為它可以繞過open_basedir指令的限制。
; 在安全模式下始終禁用dl()函數,而不管此處如何設置。

expose_php = On
;ini
; 是否暴露PHP被安裝在伺服器上的事實(在http頭中加上其簽名)。
; 它不會有安全上的直接威脅,但它使得客戶端知道伺服器上安裝了PHP。

open_basedir =
;SYS
; 將PHP允許操作的所有文件(包括文件自身)都限制在此組目錄列表下。
; 當一個腳本試圖打開一個指定目錄樹之外的文件時,將遭到拒絕。
; 所有的符號連接都會被解析,所以不可能通過符號連接來避開此限制。
; 特殊值'.'指定了存放該腳本的目錄將被當做基準目錄。
; 但這有些危險,因為腳本的工作目錄可以輕易被chdir()改變。
; 對於共享伺服器,在httpd.conf中靈活設置該指令將變得非常有用。
; 在Windows中用分號分隔目錄,UNIX系統中用冒號分隔目錄。
; 作為Apache模塊時,父目錄中的open_basedir路徑將自動被繼承。
; 指定的限制實際上是一個前綴,而非一個目錄名,
; 也就是說"/dir/incl"將允許訪問"/dir/include"和"/dir/incls",
; 如果您希望將訪問控制在一個指定的目錄,那麼請在結尾加上一個斜線。
; 默認是允許打開所有文件。

[PHP-Core-Error]

error_reporting = E_ALL & ~E_NOTICE
; 錯誤報告級別是位欄位的疊加,推薦使用 E_ALL | E_STRICT
; 1 E_ERROR 致命的運行時錯誤
; 2 E_WARNING 運行時警告(非致命性錯誤)
; 4 E_PARSE 編譯時解析錯誤
; 8 E_NOTICE 運行時提醒(經常是bug,也可能是有意的)
; 16 E_CORE_ERROR PHP啟動時初始化過程中的致命錯誤
; 32 E_CORE_WARNING PHP啟動時初始化過程中的警告(非致命性錯)
; 64 E_COMPILE_ERROR 編譯時致命性錯
; 128 E_COMPILE_WARNING 編譯時警告(非致命性錯)
; 256 E_USER_ERROR 用戶自定義的致命錯誤
; 512 E_USER_WARNING 用戶自定義的警告(非致命性錯誤)
; 1024 E_USER_NOTICE 用戶自定義的提醒(經常是bug,也可能是有意的)
; 2048 E_STRICT 編碼標准化警告(建議如何修改以向前兼容)
; 4096 E_RECOVERABLE_ERROR 接近致命的運行時錯誤,若未被捕獲則視同E_ERROR
; 6143 E_ALL 除E_STRICT外的所有錯誤(PHP6中為8191,即包含所有)

track_errors = Off
; 是否在變數$php_errormsg中保存最近一個錯誤或警告消息。

display_errors = On
; 是否將錯誤信息作為輸出的一部分顯示。
; 在最終發布的web站點上,強烈建議你關掉這個特性,並使用錯誤日誌代替(參看下面)。
; 在最終發布的web站點打開這個特性可能暴露一些安全信息,
; 例如你的web服務上的文件路徑、資料庫規劃或別的信息。

display_startup_errors = Off
; 是否顯示PHP啟動時的錯誤。
; 即使display_errors指令被打開,關閉此參數也將不顯示PHP啟動時的錯誤。
; 建議你關掉這個特性,除非你必須要用於調試中。

report_memleaks = On
; 是否報告內存泄漏。這個參數只在以調試方式編譯的PHP中起作用,
; 並且必須在error_reporting指令中包含 E_WARNING

report_zend_debug = On
; 尚無說明文檔

html_errors = On
; 是否在出錯信息中使用HTML標記。
; 注意: 不要在發布的站點上使用這個特性!

docref_root = ;"http://localhost/phpmanual/"
docref_ext = ;".html"
; 如果打開了html_errors指令,PHP將會在出錯信息上顯示超連接,
; 直接鏈接到一個說明這個錯誤或者導致這個錯誤的函數的頁面。
; 你可以從http://www.php.net/docs.php下載php手冊,
; 並將docref_root指令指向你本地的手冊所在的URL目錄。
; 你還必須設置docref_ext指令來指定文件的擴展名(必須含有'.')。
; 注意: 不要在發布的站點上使用這個特性。

error_prepend_string = ;"<font color=#f00>"
; 用於錯誤信息前輸出的字元串
error_append_string = ;"</font>"
; 用於錯誤信息後輸出的字元串

xmlrpc_errors = Off
xmlrpc_error_number = 0
; 尚無文檔

[PHP-Core-Logging]

define_syslog_variables = Off
; 是否定義各種系統日誌變數,如:$LOG_PID, $LOG_CRON 等等。
; 關掉它以提高效率的好主意。
; 你可以在運行時調用define_syslog_variables()函數來定義這些變數。

error_log =
; 將錯誤日誌記錄到哪個文件中。該文件必須對Web伺服器用戶可寫。
; syslog 表示記錄到系統日誌中(NT下的事件日誌, Unix下的syslog(3))
; 如果此處未設置任何值,則錯誤將被記錄到Web伺服器的錯誤日誌中。

log_errors = Off
; 是否在日誌文件里記錄錯誤,具體在哪裡記錄取決於error_log指令。
; 強烈建議你在最終發布的web站點時使用日誌記錄錯誤而不是直接輸出,
; 這樣可以讓你既知道那裡出了問題,又不會暴露敏感信息。

log_errors_max_len = 1024
; 設置錯誤日誌中附加的與錯誤信息相關聯的錯誤源的最大長度。
; 這里設置的值對顯示的和記錄的錯誤以及$php_errormsg都有效。
; 設為 0 可以允許無限長度。

ignore_repeated_errors = Off
; 記錄錯誤日誌時是否忽略重復的錯誤信息。
; 錯誤信息必須出現在同一文件的同一行才被被視為重復。

ignore_repeated_source = Off
; 是否在忽略重復的錯誤信息時忽略重復的錯誤源。

[PHP-Core-Mail]
; 要使郵件函數可用,PHP必須在編譯時能夠訪問sendmail程序。
; 如果使用其它的郵件程序,如qmail或postfix,確保使用了相應的sendmail包裝。
; PHP首先會在系統的PATH環境變數中搜索sendmail,接著按以下順序搜索:
; /usr/bin:/usr/sbin:/usr/etc:/etc:/usr/ucblib:/usr/lib
; 強烈建議在PATH中能夠找到sendmail。
; 另外,編譯PHP的用戶必須能夠訪問sendmail程序。

SMTP = "localhost"
; mail()函數中用來發送郵件的SMTP伺服器的主機名稱或者IP地址。僅用於win32。

smtp_port = 25
; SMTP伺服器的埠號。僅用於win32。

sendmail_from =
; 發送郵件時使用的"From:"頭中的郵件地址。僅用於win32
; 該選項還同時設置了"Return-Path:"頭。

sendmail_path = "-t -i"
;SYS
; 僅用於unix,也可支持參數(默認的是'sendmail -t -i')
; sendmail程序的路徑,通常為"/usr/sbin/sendmail或/usr/lib/sendmail"。
; configure腳本會嘗試找到該程序並設定為默認值,但是如果失敗的話,可以在這里設定。
; 不使用sendmail的系統應將此指令設定為sendmail替代程序(如果有的話)。
; 例如,Qmail用戶通常可以設為"/var/qmail/bin/sendmail"或"/var/qmail/bin/qmail-inject"。
; qmail-inject 不需要任何選項就能正確處理郵件。

mail.force_extra_parameters =
; 作為額外的參數傳遞給sendmail庫的強制指定的參數附加值。
; 這些參數總是會替換掉mail()的第5個參數,即使在安全模式下也是如此。

[PHP-Core-ResourceLimit]

default_socket_timeout = 60
; 默認socket超時(秒)

max_execution_time = 30
; 每個腳本最大允許執行時間(秒),0 表示沒有限制。
; 這個參數有助於阻止劣質腳本無休止的佔用伺服器資源。
; 該指令僅影響腳本本身的運行時間,任何其它花費在腳本運行之外的時間,
; 如用system()/sleep()函數的使用、資料庫查詢、文件上傳等,都不包括在內。
; 在安全模式下,你不能用ini_set()在運行時改變這個設置。

memory_limit = 16M
; 一個腳本所能夠申請到的最大內存位元組數(可以使用K和M作為單位)。
; 這有助於防止劣質腳本消耗完伺服器上的所有內存。
; 要能夠使用該指令必須在編譯時使用"--enable-memory-limit"配置選項。
; 如果要取消內存限制,則必須將其設為 -1 。
; 設置了該指令後,memory_get_usage()函數將變為可用。

max_input_time = -1
; 每個腳本解析輸入數據(POST, GET, upload)的最大允許時間(秒)。
; -1 表示不限制。

post_max_size = 8M
; 允許的POST數據最大位元組長度。此設定也影響到文件上傳。
; 如果POST數據超出限制,那麼___FCKpd___0

POST和
___FCKpd___0

FILES將會為空。
; 要上傳大文件,該值必須大於upload_max_filesize指令的值。
; 如果啟用了內存限制,那麼該值應當小於memory_limit指令的值。

realpath_cache_size = 16K
;SYS
; 指定PHP使用的realpath(規范化的絕對路徑名)緩沖區大小。
; 在PHP打開大量文件的系統上應當增大該值以提高性能。

realpath_cache_ttl = 120
;SYS
; realpath緩沖區中信息的有效期(秒)。
; 對文件很少變動的系統,可以增大該值以提高性能。

[PHP-Core-FileUpLoad]

file_uploads = On
;SYS
; 是否允許HTTP文件上傳。
; 參見upload_max_filesize, upload_tmp_dir, post_max_size指令

upload_max_filesize = 2M
; 允許上傳的文件的最大尺寸。

upload_tmp_dir =
;SYS
; 文件上傳時存放文件的臨時目錄(必須是PHP進程用戶可寫的目錄)。
; 如果未指定則PHP使用系統默認的臨時目錄。

[PHP-Core-MagicQuotes]
; PHP6將取消魔術引號,相當於下列指令全部為 Off

magic_quotes_gpc = On
; 是否對輸入的GET/POST/Cookie數據使用自動字元串轉義( ' " \ NULL )。
; 這里的設置將自動影響
___FCKpd___0

GEST
___FCKpd___0

POST
___FCKpd___0

COOKIE 數組的值。
; 若將本指令與magic_quotes_sybase指令同時打開,則僅將單引號(')轉義為(''),
; 其它特殊字元將不被轉義,即( " \ NULL )將保持原樣!!
; 建議關閉此特性,並使用自定義的過濾函數。

magic_quotes_runtime = Off
; 是否對運行時從外部資源產生的數據使用自動字元串轉義( ' " \ NULL )。
; 若打開本指令,則大多數函數從外部資源(資料庫,文本文件等)返回數據都將被轉義。
; 例如:用SQL查詢得到的數據,用exec()函數得到的數據,等等
; 若將本指令與magic_quotes_sybase指令同時打開,則僅將單引號(')轉義為(''),
; 其它特殊字元將不被轉義,即( " \ NULL )將保持原樣!!
; 建議關閉此特性,並視具體情況使用自定義的過濾函數。

magic_quotes_sybase = Off
; 是否採用Sybase形式的自動字元串轉義(用 '' 表示 ')

[PHP-Core-HighLight]

highlight.bg = "#FFFFFF"
highlight.comment = "#FF8000"
highlight.default = "#0000BB"
highlight.html = "#000000"
highlight.keyword = "#007700"
highlight.string = "#DD0000"
; 語法高亮模式的色彩(通常用於顯示 .phps 文件)。
; 只要能被<font color=xxx>接受的東西就能正常工作。

[PHP-Core-Langue]

short_open_tag = On
; 是否允許使用"<? ?>"短標識。否則必須使用"<?php ?>"長標識。
; 除非你的php程序僅在受控環境下運行,且只供自己使用,否則請不要使用短標記。
; 如果要和XML結合使用PHP,可以選擇關閉此選項以方便直接嵌入"<?xml ... ?>",
; 不然你必須用PHP來輸出:<? echo '<?xml version="1.0"'; ?>
; 本指令也會影響到縮寫形式"<?=",它和"<? echo"等價,要使用它也必須打開短標記。

asp_tags = Off
; 是否允許ASP風格的標記"<% %>",這也會影響到縮寫形式"<%="。
; PHP6中將刪除此指令

arg_separator.output = "&"
; PHP所產生的URL中用來分隔參數的分隔符。
; 另外還可以用"&"或","等等。

arg_separator.input = "&"
; PHP解析URL中的變數時使用的分隔符列表。
; 字元串中的每一個字元都會被當作分割符。
; 另外還可以用",&"等等。

allow_call_time_pass_reference = On
; 是否強迫在函數調用時按引用傳遞參數(每次使用此特性都會收到一條警告)。
; php反對這種做法,並在將來的版本里不再支持,因為它影響到了代碼的整潔。
; 鼓勵的方法是在函數聲明裡明確指定哪些參數按引用傳遞。
; 我們鼓勵你關閉這一選項,以保證你的腳本在將來版本的語言里仍能正常工作。

auto_globals_jit = On
; 是否僅在使用到
___FCKpd___0

SERVER和
___FCKpd___0

ENV變數時才創建(而不是在腳本一啟動時就自動創建)。
; 如果並未在腳本中使用這兩個數組,打開該指令將會獲得性能上的提升。
; 要想該指令生效,必須關閉register_globals和register_long_arrays指令。

auto_prepend_file =
auto_append_file =
; 指定在主文件之前/後自動解析的文件名。為空表示禁用該特性。
; 該文件就像調用了include()函數被包含進來一樣,因此會使用include_path指令的值。
; 注意:如果腳本通過exit()終止,那麼自動後綴將不會發生。

variables_order = "EGPCS"
; PHP注冊 Environment, GET, POST, Cookie, Server 變數的順序。
; 分別用 E, G, P, C, S 表示,按從左到右注冊,新值覆蓋舊值。
; 舉例說,設為"GP"將會導致用POST變數覆蓋同名的GET變數,
; 並完全忽略 Environment, Cookie, Server 變數。
; 推薦使用"GPC"或"GPCS",並使用getenv()函數訪問環境變數。

register_globals = Off
; 是否將 E, G, P, C, S 變數注冊為全局變數。
; 打開該指令可能會導致嚴重的安全問題,除非你的腳本經過非常仔細的檢查。
; 推薦使用預定義的超全局變數:
___FCKpd___0

ENV,
___FCKpd___0

GET,
___FCKpd___0

POST,
___FCKpd___0

COOKIE,
___FCKpd___0

SERVER
; 該指令受variables_order指令的影響。
; PHP6中已經刪除此指令。

register_argc_argv = On
; 是否聲明$argv和$argc全局變數(包含用GET方法的信息)。
; 建議不要使用這兩個變數,並關掉該指令以提高性能。

register_long_arrays = On
; 是否啟用舊式的長式數組(HTTP_*_VARS)。
; 鼓勵使用短式的預定義超全局數組,並關閉該特性以獲得更好的性能。
; PHP6中已經刪除此指令。

always_populate_raw_post_data = Off
; 是否總是生成$HTTP_RAW_POST_DATA變數(原始POST數據)。
; 否則,此變數僅在遇到不能識別的MIME類型的數據時才產生。
; 不過,訪問原始POST數據的更好方法是 php://input 。
; $HTTP_RAW_POST_DATA對於enctype="multipart/form-data"的表單數據不可用。

unserialize_callback_func =
; 如果解序列化處理器需要實例化一個未定義的類,
; 這里指定的回調函數將以該未定義類的名字作為參數被unserialize()調用,
; 以免得到不完整的"__PHP_Incomplete_Class"對象。
; 如果這里沒有指定函數,或指定的函數不包含(或實現)那個未定義的類,將會顯示警告信息。
; 所以僅在確實需要實現這樣的回調函數時才設置該指令。
; 若要禁止這個特性,只需置空即可。

y2k_compliance = On
; 是否強制打開2000年適應(可能在非Y2K適應的瀏覽器中導致問題)。

zend.ze1_compatibility_mode = Off
; 是否使用兼容Zend引擎I(PHP 4.x)的模式。
; 這將影響對象的復制、構造(無屬性的對象會產生FALSE或0)、比較。
; 兼容模式下,對象將按值傳遞,而不是默認的按引用傳遞。

precision = 14
; 浮點型數據顯示的有效位數。

serialize_precision = 100
; 將浮點型和雙精度型數據序列化存儲時的精度(有效位數)。
; 默認值能夠確保浮點型數據被解序列化程序解碼時不會丟失數據。

[PHP-Core-OutputControl]
; 輸出控制函數很有用,特別是在已經輸出了信息之後再發送HTTP頭的情況下。
; 輸出控制函數不會作用於header()或setcookie()等函數發送的HTTP頭,
; 而只會影響類似於echo()函數輸出的信息和嵌入在PHP代碼之間的信息。

implicit_flush = Off
; 是否要求PHP輸出層在每個輸出塊之後自動刷新數據。
; 這等效於在每個 print()、echo()、HTML塊 之後自動調用flush()函數。
; 打開這個選項對程序執行的性能有嚴重的影響,通常只推薦在調試時使用。
; 在CLI SAPI的執行模式下,該指令默認為 On 。

output_buffering = 0
; 輸出緩沖區大小(位元組)。建議值為4096~8192。
; 輸出緩沖允許你甚至在輸出正文內容之後再發送HTTP頭(包括cookies)。
; 其代價是輸出層減慢一點點速度。
; 設置輸出緩沖可以減少寫入,有時還能減少網路數據包的發送。
; 這個參數的實際收益很大程度上取決於你使用的是什麼Web伺服器以及什麼樣的腳本。

output_handler =
; 將所有腳本的輸出重定向到一個輸出處理函數。
; 比如,重定向到mb_output_handler()函數時,字元編碼將被透明地轉換為指定的編碼。
; 一旦你在這里指定了輸出處理程序,輸出緩沖將被自動打開(output_buffering=4096)。
; 注意0: 此處僅能使用PHP內置的函數,自定義函數應在腳本中使用ob_start()指定。
; 注意1: 可移植腳本不能依賴該指令,而應使用ob_start()函數明確指定輸出處理函數。
; 使用這個指令可能會導致某些你不熟悉的腳本出錯。
; 注意2: 你不能同時使用"mb_output_handler"和"ob_iconv_handler"兩個輸出處理函數。
; 你也不能同時使用"ob_gzhandler"輸出處理函數和zlib.output_compression指令。
; 注意3: 如果使用zlib.output_handler指令開啟zlib輸出壓縮,該指令必須為空。

Ⅶ 我想學編程,應該學哪一類,求助

先學c和c++

Ⅷ Web應用安全威脅與防治——基於OWASP Top 10與ESAPI的目錄

第1篇 引子
故事一:家有一IT,如有一寶 2
故事二:微博上的蠕蟲 3
故事三:明文密碼 5
故事四:IT青年VS禪師 5
第2篇 基礎篇
第1章 Web應用技術 8
1.1 HTTP簡介 8
1.2 HTTPS簡介 10
1.3 URI 11
1.3.1 URL 11
1.3.2 URI/URL/URN 12
1.3.3 URI比較 13
1.4 HTTP消息 13
1.4.1 HTTP方法14
1.4.2 HTTP狀態碼 19
1.5 HTTP Cookie20
1.5.1 HTTP Cookie的作用22
1.5.2 HTTP Cookie的缺點23
1.6 HTTP session23
1.7 HTTP的安全 24
第2章 OWASP 27
2.1 OWASP簡介27
2.2 OWASP風險評估方法28
2.3 OWASP Top 10 34
2.4 ESAPI(Enterprise Security API) 35
第3篇 工具篇
第3章 Web伺服器工具簡介 38
3.1 Apache 38
3.2 其他Web伺服器 39
第4章 Web瀏覽器以及調試工具 42
4.1 瀏覽器簡介 42
4.1.1 基本功能 42
4.1.2 主流瀏覽器 43
4.1.3 瀏覽器內核 44
4.2 開發調試工具 45
第5章 滲透測試工具 47
5.1 Fiddler 47
5.1.1 工作原理 47
5.1.2 如何捕捉HTTPS會話 48
5.1.3 Fiddler功能介紹 49
5.1.4 Fiddler擴展功能 56
5.1.5 Fiddler第三方擴展功能 56
5.2 ZAP 58
5.2.1 斷點調試 60
5.2.2 編碼/解碼 61
5.2.3 主動掃描 62
5.2.4 Spider63
5.2.5 暴力破解 64
5.2.6 埠掃描 65
5.2.7 Fuzzer66
5.2.8 API 66
5.3 WebScrab 67
5.3.1 HTTP代理67
5.3.2 Manual Request 69
5.3.3 Spider70
5.3.4 Session ID分析71
5.3.5 Bean Shell的支持 71
5.3.6 Web編碼和解碼 73
第6章 掃描工具簡介 74
6.1 萬能的掃描工具——WebInspect 74
6.1.1 引言 74
6.1.2 WebInspect特性 74
6.1.3 環境准備 74
6.1.4 HP WebInspect總覽 76
6.1.5 Web網站測試 79
6.1.6 企業測試 86
6.1.7 生成報告 88
6.2 開源掃描工具——w3af 91
6.2.1 w3af概述 91
6.2.2 w3af環境配置 92
6.2.3 w3af使用示例 93
6.3 被動掃描的利器——Ratproxy 94
6.3.1 Ratproxy概述 94
6.3.2 Ratproxy環境配置 95
6.3.3 Ratproxy運行 96
第7章 漏洞學習網站 98
7.1 WebGoat 98
7.2 DVWA 99
7.3 其他的漏洞學習網站 99
第4篇 攻防篇
第8章 代碼注入 102
8.1 注入的分類 104
8.1.1 OS命令注入 104
8.1.2 XPath注入109
8.1.3 LDAP注入114
8.1.4 SQL注入 118
8.1.5 JSON注入131
8.1.6 URL參數注入 133
8.2 OWASP ESAPI與注入問題的預防 135
8.2.1 命令注入的ESAPI預防 135
8.2.2 XPath注入的ESAPI預防 138
8.2.3 LDAP注入的ESAPI預防 138
8.2.4 SQL注入的ESAPI預防 141
8.2.5 其他注入的ESAPI預防 143
8.3 注入預防檢查列表 143
8.4 小結 144
第9章 跨站腳本(XSS)146
9.1 XSS簡介 146
9.2 XSS分類 146
9.2.1 反射式XSS 146
9.2.2 存儲式XSS 148
9.2.3 基於DOM的XSS 149
9.2.4 XSS另一種分類法 151
9.3 XSS危害 154
9.4 XSS檢測 156
9.4.1 手動檢測 156
9.4.2 半自動檢測 158
9.4.3 全自動檢測 158
9.5 XSS的預防 159
9.5.1 一刀切 159
9.5.2 在伺服器端預防 160
9.5.3 在客戶端預防 168
9.5.4 富文本框的XSS預防措施 170
9.5.5 CSS 172
9.5.6 FreeMarker174
9.5.7 OWASP ESAPI與XSS的預防 177
9.6 XSS檢查列表 183
9.7 小結 184
第10章 失效的身份認證和會話管理 185
10.1 身份認證和會話管理簡介185
10.2 誰動了我的琴弦——會話劫持186
10.3 請君入瓮——會話固定 188
10.4 我很含蓄——非直接會話攻擊191
10.5 如何測試 199
10.5.1 會話固定測試 199
10.5.2 用Web Scrab分析會話ID 200
10.6 如何預防會話攻擊 202
10.6.1 如何防治固定會話 202
10.6.2 保護你的會話令牌 204
10.7 身份驗證 208
10.7.1 雙因子認證流程圖 209
10.7.2 雙因子認證原理說明 210
10.7.3 隱藏在QR Code里的秘密 211
10.7.4 如何在伺服器端實現雙因子認證 212
10.7.5 我沒有智能手機怎麼辦 216
10.8 身份認證設計的基本准則216
10.8.1 密碼長度和復雜性策略 216
10.8.2 實現一個安全的密碼恢復策略 217
10.8.3 重要的操作應通過HTTPS傳輸 217
10.8.4 認證錯誤信息以及賬戶鎖定 219
10.9 檢查列表 219
10.9.1 身份驗證和密碼管理檢查列表 219
10.9.2 會話管理檢查列表 220
10.10 小結 221
第11章 不安全的直接對象引用 222
11.1 坐一望二——直接對象引用 222
11.2 不安全直接對象引用的危害 224
11.3 其他可能的不安全直接對象引用 224
11.4 不安全直接對象引用的預防 225
11.5 如何使用OWASP ESAPI預防 227
11.6 直接對象引用檢查列表 230
11.7 小結 230
第12章 跨站請求偽造(CSRF) 232
12.1 CSRF簡介 232
12.2 誰動了我的乳酪232
12.3 跨站請求偽造的攻擊原理233
12.4 剝繭抽絲見真相235
12.5 其他可能的攻擊場景236
12.5.1 家用路由器被CSRF攻擊 236
12.5.2 別以為用POST你就躲過了CSRF 238
12.5.3 寫一個自己的CSRF Redirector 241
12.5.4 利用重定向欺騙老實人 243
12.6 跨站請求偽造的檢測245
12.6.1 手工檢測 245
12.6.2 半自動CSRFTester 246
12.7 跨站請求偽造的預防250
12.7.1 用戶需要知道的一些小技巧 250
12.7.2 增加一些確認操作 250
12.7.3 重新認證 250
12.7.4 加入驗證碼(CAPTCHA) 250
12.7.5 ESAPI解決CSRF 250
12.7.6 CSRFGuard 256
12.8 CSRF檢查列表 260
12.9 小結 261
第13章 安全配置錯誤 262
13.1 不能說的秘密——Google hacking 262
13.2 Tomcat那些事 264
13.3 安全配置錯誤的檢測與預防 264
13.3.1 系統配置 264
13.3.2 Web應用伺服器的配置 268
13.3.3 資料庫 282
13.3.4 日誌配置 284
13.3.5 協議 285
13.3.6 開發相關的安全配置 291
13.3.7 編譯器的安全配置 302
13.4 安全配置檢查列表 305
13.5 小結 307
第14章 不安全的加密存儲 308
14.1 關於加密 310
14.1.1 加密演算法簡介 310
14.1.2 加密演算法作用 312
14.1.3 加密分類 313
14.2 加密數據分類 314
14.3 加密數據保護 315
14.3.1 密碼的存儲與保護 315
14.3.2 重要信息的保護 323
14.3.3 密鑰的管理 336
14.3.4 數據的完整性 339
14.3.5 雲系統存儲安全 342
14.3.6 數據保護的常犯錯誤 343
14.4 如何檢測加密存儲數據的安全性 344
14.4.1 審查加密內容 344
14.4.2 已知答案測試(Known Answer Test)344
14.4.3 自發明加密演算法的檢測 345
14.4.4 AES加密演算法的測試 345
14.4.5 代碼審查 346
14.5 如何預防不安全的加密存儲的數據347
14.6 OWASP ESAPI與加密存儲 348
14.6.1 OWASP ESAPI與隨機數 353
14.6.2 OWASP ESAPI 與FIPS 140-2 354
14.7 加密存儲檢查列表 355
14.8 小結 355
第15章 沒有限制的URL訪問357
15.1 掩耳盜鈴——隱藏(Disable)頁面按鈕357
15.2 許可權認證模型 358
15.2.1 自主型訪問控制 360
15.2.2 強制型訪問控制 360
15.2.3 基於角色的訪問控制 361
15.3 繞過認證 363
15.3.1 網路嗅探 364
15.3.2 默認或者可猜測用戶賬號 364
15.3.3 直接訪問內部URL364
15.3.4 修改參數繞過認證 365
15.3.5 可預測的SessionID365
15.3.6 注入問題 365
15.3.7 CSRF 365
15.3.8 繞過認證小結 366
15.4 繞過授權驗證 367
15.4.1 水平越權 368
15.4.2 垂直越權 369
15.5 文件上傳與下載373
15.5.1 文件上傳 373
15.5.2 文件下載和路徑遍歷 377
15.6 靜態資源 382
15.7 後台組件之間的認證383
15.8 SSO 385
15.9 OWASP ESAPI與授權 386
15.9.1 AccessController的實現387
15.9.2 一個AccessController的代碼示例390
15.9.3 我們還需要做些什麼 391
15.10 訪問控制檢查列表 393
15.11 小結 393
第16章 傳輸層保護不足 395
16.1 卧底的故事——對稱加密和非對稱加密395
16.2 明文傳輸問題 396
16.3 有什麼危害398
16.3.1 會話劫持 398
16.3.2 中間人攻擊 399
16.4 預防措施 399
16.4.1 密鑰交換演算法 400
16.4.2 對稱加密和非對稱加密結合 401
16.4.3 SSL/TLS 406
16.5 檢查列表 423
16.6 小結 423
第17章 未驗證的重定向和轉發 425
17.1 三角借貸的故事——轉發和重定向425
17.1.1 URL轉發425
17.1.2 URL重定向 426
17.1.3 轉發與重定向的區別 429
17.1.4 URL 重定向的實現方式 430
17.2 危害 438
17.3 如何檢測 439
17.4 如何預防 440
17.4.1 OWASP ESAPI與預防 441
17.5 重定向和轉發檢查列表 443
17.6 小結 443
第5篇 安全設計、編碼十大原則
第18章 安全設計十大原則 448
設計原則1——簡單易懂 448
設計原則2——最小特權 448
設計原則3——故障安全化450
設計原則4——保護最薄弱環節451
設計原則5——提供深度防禦 452
設計原則6——分隔 453
設計原則7——總體調節 454
設計原則8——默認不信任454
設計原則9——保護隱私 455
設計原則10——公開設計,不要假設隱藏秘密就是安全 455
第19章 安全編碼十大原則 457
編碼原則1——保持簡單 457
編碼原則2——驗證輸入 458
編碼原則3——注意編譯器告警459
編碼原則4——框架和設計要符合安全策略 459
編碼原則5——默認拒絕 460
編碼原則6——堅持最小許可權原則 462
編碼原則7——凈化發送到其他系統的數據 463
編碼原則8——深度預防 464
編碼原則9——使用有效的質量保證技術464
編碼原則10——採用一個安全編碼規范 465
媒體評論
這是一本帶點酷酷的工程師范兒和人文氣質的「硬貨」。作為一名資深IT文藝老人,特別喜歡這種帶著思想氣息卻又有著豐富案例娓娓道來的實用信息安全書,過去卻往往只在國外作者中讀到。正如書中開頭的引子說的那樣:「家有IT,如有一寶。」那麼在Web安全日益火爆的今天,你會不會在讀完這本書後的未來也成為傳說中讓我們頂禮膜拜的大牛呢^-^
——IDF威懾防禦實驗室益雲(公益互聯網)社會創新中心聯合創始人萬濤@黑客老鷹
伴隨互聯網的高速發展,基於B/S架構的業務系統對安全要求越來越高,安全從業人員面臨空前的壓力。如何讓安全從業人員快速掌握Web應用安全?本書以詼諧、幽默的語言,精彩、豐富的實例,幫助安全從業人員從端到端理解Web應用安全。不失為近幾年Web應用安全書籍的上佳之作。
——OWASP中國區主席SecZone高級安全顧問 RIP
很樂意看到有人將自身的資深安全積累和OWASP的最佳實踐出版成書,內容嚴謹細致卻不乏生動。這本信息安全領域的實用手冊將成為銀基安全致力於互聯網安全的參考指導書目之一,我們廣泛的電信、銀行、保險、證券和政府部門等客戶都會從中受益。
——上海銀基信息安全技術有限公司首席技術官胡紹勇(Kurau)
隨著安全訪問控制策略ACL的普及應用,互聯網企業目前面臨的安全風險面主要集中在Web服務層。其中Web應用系統在架構設計、開發編碼過程中是安全漏洞和風險引入的主要階段,而普遍地我們的架構、開發、測試崗位在安全技能與意識上恰恰是相對比較欠缺的。本書詳細介紹了Web安全基礎知識、測試平台與方法,常見漏洞形式與原理,並結合OWASP最佳實踐經驗給出預防建議、設計和編碼原則等。書中舉例生動形象,圖文代碼並茂,步驟歸納清晰。特別推薦給廣大Web開發、測試、安全崗位的朋友們。
—— 中國金山軟體集團信息安全負責人程沖
在網路攻擊愈加復雜,手段日益翻新的今天,Web攻擊依然是大多數攻擊者首選的入侵手段。反思CSDN泄密及新浪微博蠕蟲事件,Web應用的安全突顯其重要性。OWASP作為全球領先的Web應用安全研究團隊,透過本書將Web應用安全的威脅、防禦以及相關的工具進行了詳細的探討和研究。詳盡的操作步驟說明是本書的亮點之一,這些詳實且圖文並茂的內容為逐步深入學習Web應用安全提供了很好的幫助。我衷心希望這本書能夠成為信息安全專業的在校生以及應用安全相關從業人員的學習指導書。
-- 上海交通大學信息安全工程學院施勇(CISSP CISA)

Ⅸ web漏洞攻擊有哪些

一、SQL注入漏洞
SQL注入攻擊(SQL Injection),簡稱注入攻擊、SQL注入,被廣泛用於非法獲取網站控制權,是發生在應用程序的資料庫層上的安全漏洞。在設計程序,忽略了對輸入字元串中夾帶的SQL指令的檢查,被資料庫誤認為是正常的SQL指令而運行,從而使資料庫受到攻擊,可能導致數據被竊取、更改、刪除,以及進一步導致網站被嵌入惡意代碼、被植入後門程序等危害。
通常情況下,SQL注入的位置包括:
(1)表單提交,主要是POST請求,也包括GET請求;
(2)URL參數提交,主要為GET請求參數;
(3)Cookie參數提交;
(4)HTTP請求頭部的一些可修改的值,比如Referer、User_Agent等;
(5)一些邊緣的輸入點,比如.mp3文件的一些文件信息等。
常見的防範方法
(1)所有的查詢語句都使用資料庫提供的參數化查詢介面,參數化的語句使用參數而不是將用戶輸入變數嵌入到SQL語句中。當前幾乎所有的資料庫系統都提供了參數化SQL語句執行介面,使用此介面可以非常有效的防止SQL注入攻擊。
(2)對進入資料庫的特殊字元(』」<>&*;等)進行轉義處理,或編碼轉換。
(3)確認每種數據的類型,比如數字型的數據就必須是數字,資料庫中的存儲欄位必須對應為int型。
(4)數據長度應該嚴格規定,能在一定程度上防止比較長的SQL注入語句無法正確執行。
(5)網站每個數據層的編碼統一,建議全部使用UTF-8編碼,上下層編碼不一致有可能導致一些過濾模型被繞過。
(6)嚴格限制網站用戶的資料庫的操作許可權,給此用戶提供僅僅能夠滿足其工作的許可權,從而最大限度的減少注入攻擊對資料庫的危害。
(7)避免網站顯示SQL錯誤信息,比如類型錯誤、欄位不匹配等,防止攻擊者利用這些錯誤信息進行一些判斷。
(8)在網站發布之前建議使用一些專業的SQL注入檢測工具進行檢測,及時修補這些SQL注入漏洞。

二、跨站腳本漏洞
跨站腳本攻擊(Cross-site scripting,通常簡稱為XSS)發生在客戶端,可被用於進行竊取隱私、釣魚欺騙、竊取密碼、傳播惡意代碼等攻擊。
XSS攻擊使用到的技術主要為HTML和Javascript,也包括VBScript和ActionScript等。XSS攻擊對WEB伺服器雖無直接危害,但是它藉助網站進行傳播,使網站的使用用戶受到攻擊,導致網站用戶帳號被竊取,從而對網站也產生了較嚴重的危害。
XSS類型包括:
(1)非持久型跨站:即反射型跨站腳本漏洞,是目前最普遍的跨站類型。跨站代碼一般存在於鏈接中,請求這樣的鏈接時,跨站代碼經過服務端反射回來,這類跨站的代碼不存儲到服務端(比如資料庫中)。上面章節所舉的例子就是這類情況。
(2)持久型跨站:這是危害最直接的跨站類型,跨站代碼存儲於服務端(比如資料庫中)。常見情況是某用戶在論壇發貼,如果論壇沒有過濾用戶輸入的Javascript代碼數據,就會導致其他瀏覽此貼的用戶的瀏覽器會執行發貼人所嵌入的Javascript代碼。
(3)DOM跨站(DOM XSS):是一種發生在客戶端DOM(Document Object Model文檔對象模型)中的跨站漏洞,很大原因是因為客戶端腳本處理邏輯導致的安全問題。
常用的防止XSS技術包括:
(1)與SQL注入防護的建議一樣,假定所有輸入都是可疑的,必須對所有輸入中的script、iframe等字樣進行嚴格的檢查。這里的輸入不僅僅是用戶可以直接交互的輸入介面,也包括HTTP請求中的Cookie中的變數,HTTP請求頭部中的變數等。
(2)不僅要驗證數據的類型,還要驗證其格式、長度、范圍和內容。
(3)不要僅僅在客戶端做數據的驗證與過濾,關鍵的過濾步驟在服務端進行。
(4)對輸出的數據也要檢查,資料庫里的值有可能會在一個大網站的多處都有輸出,即使在輸入做了編碼等操作,在各處的輸出點時也要進行安全檢查。
(5)在發布應用程序之前測試所有已知的威脅。

三、弱口令漏洞
弱口令(weak password) 沒有嚴格和准確的定義,通常認為容易被別人(他們有可能對你很了解)猜測到或被破解工具破解的口令均為弱口令。設置密碼通常遵循以下原則:
(1)不使用空口令或系統預設的口令,這些口令眾所周之,為典型的弱口令。
(2)口令長度不小於8個字元。
(3)口令不應該為連續的某個字元(例如:AAAAAAAA)或重復某些字元的組合(例如:tzf.tzf.)。
(4)口令應該為以下四類字元的組合,大寫字母(A-Z)、小寫字母(a-z)、數字(0-9)和特殊字元。每類字元至少包含一個。如果某類字元只包含一個,那麼該字元不應為首字元或尾字元。
(5)口令中不應包含本人、父母、子女和配偶的姓名和出生日期、紀念日期、登錄名、E-mail地址等等與本人有關的信息,以及字典中的單詞。
(6)口令不應該為用數字或符號代替某些字母的單詞。
(7)口令應該易記且可以快速輸入,防止他人從你身後很容易看到你的輸入。
(8)至少90天內更換一次口令,防止未被發現的入侵者繼續使用該口令。

四、HTTP報頭追蹤漏洞
HTTP/1.1(RFC2616)規范定義了HTTP TRACE方法,主要是用於客戶端通過向Web伺服器提交TRACE請求來進行測試或獲得診斷信息。當Web伺服器啟用TRACE時,提交的請求頭會在伺服器響應的內容(Body)中完整的返回,其中HTTP頭很可能包括Session Token、Cookies或其它認證信息。攻擊者可以利用此漏洞來欺騙合法用戶並得到他們的私人信息。該漏洞往往與其它方式配合來進行有效攻擊,由於HTTP TRACE請求可以通過客戶瀏覽器腳本發起(如XMLHttpRequest),並可以通過DOM介面來訪問,因此很容易被攻擊者利用。
防禦HTTP報頭追蹤漏洞的方法通常禁用HTTP TRACE方法。

五、Struts2遠程命令執行漏洞
ApacheStruts是一款建立Java web應用程序的開放源代碼架構。Apache Struts存在一個輸入過濾錯誤,如果遇到轉換錯誤可被利用注入和執行任意Java代碼。
網站存在遠程代碼執行漏洞的大部分原因是由於網站採用了Apache Struts Xwork作為網站應用框架,由於該軟體存在遠程代碼執高危漏洞,導致網站面臨安全風險。CNVD處置過諸多此類漏洞,例如:「GPS車載衛星定位系統」網站存在遠程命令執行漏洞(CNVD-2012-13934);Aspcms留言本遠程代碼執行漏洞(CNVD-2012-11590)等。
修復此類漏洞,只需到Apache官網升級Apache Struts到最新版本:http://struts.apache.org

六、文件上傳漏洞
文件上傳漏洞通常由於網頁代碼中的文件上傳路徑變數過濾不嚴造成的,如果文件上傳功能實現代碼沒有嚴格限制用戶上傳的文件後綴以及文件類型,攻擊者可通過 Web 訪問的目錄上傳任意文件,包括網站後門文件(webshell),進而遠程式控制制網站伺服器。
因此,在開發網站及應用程序過程中,需嚴格限制和校驗上傳的文件,禁止上傳惡意代碼的文件。同時限制相關目錄的執行許可權,防範webshell攻擊。

七、私有IP地址泄露漏洞
IP地址是網路用戶的重要標示,是攻擊者進行攻擊前需要了解的。獲取的方法較多,攻擊者也會因不同的網路情況採取不同的方法,如:在區域網內使用Ping指令,Ping對方在網路中的名稱而獲得IP;在Internet上使用IP版的QQ直接顯示。最有效的辦法是截獲並分析對方的網路數據包。攻擊者可以找到並直接通過軟體解析截獲後的數據包的IP包頭信息,再根據這些信息了解具體的IP。
針對最有效的「數據包分析方法」而言,就可以安裝能夠自動去掉發送數據包包頭IP信息的一些軟體。不過使用這些軟體有些缺點,譬如:耗費資源嚴重,降低計算機性能;訪問一些論壇或者網站時會受影響;不適合網吧用戶使用等等。現在的個人用戶採用最普及隱藏IP的方法應該是使用代理,由於使用代理伺服器後,「轉址服務」會對發送出去的數據包有所修改,致使「數據包分析」的方法失效。一些容易泄漏用戶IP的網路軟體(QQ、MSN、IE等)都支持使用代理方式連接Internet,特別是QQ使用「ezProxy」等代理軟體連接後,IP版的QQ都無法顯示該IP地址。雖然代理可以有效地隱藏用戶IP,但攻擊者亦可以繞過代理,查找到對方的真實IP地址,用戶在何種情況下使用何種方法隱藏IP,也要因情況而論。

八、未加密登錄請求
由於Web配置不安全,登陸請求把諸如用戶名和密碼等敏感欄位未加密進行傳輸,攻擊者可以竊聽網路以劫獲這些敏感信息。建議進行例如SSH等的加密後再傳輸。

九、敏感信息泄露漏洞
SQL注入、XSS、目錄遍歷、弱口令等均可導致敏感信息泄露,攻擊者可以通過漏洞獲得敏感信息。針對不同成因,防禦方式不同

十、CSRF
http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html

Web應用是指採用B/S架構、通過HTTP/HTTPS協議提供服務的統稱。隨著互聯網的廣泛使用,Web應用已經融入到日常生活中的各個方面:網上購物、網路銀行應用、證券股票交易、政府行政審批等等。在這些Web訪問中,大多數應用不是靜態的網頁瀏覽,而是涉及到伺服器側的動態處理。此時,如果Java、PHP、ASP等程序語言的編程人員的安全意識不足,對程序參數輸入等檢查不嚴格等,會導致Web應用安全問題層出不窮。

本文根據當前Web應用的安全情況,列舉了Web應用程序常見的攻擊原理及危害,並給出如何避免遭受Web攻擊的建議。

Web應用漏洞原理
Web應用攻擊是攻擊者通過瀏覽器或攻擊工具,在URL或者其它輸入區域(如表單等),向Web伺服器發送特殊請求,從中發現Web應用程序存在的漏洞,從而進一步操縱和控制網站,查看、修改未授權的信息。

1.1 Web應用的漏洞分類
1、信息泄露漏洞

信息泄露漏洞是由於Web伺服器或應用程序沒有正確處理一些特殊請求,泄露Web伺服器的一些敏感信息,如用戶名、密碼、源代碼、伺服器信息、配置信息等。

造成信息泄露主要有以下三種原因:

–Web伺服器配置存在問題,導致一些系統文件或者配置文件暴露在互聯網中;

–Web伺服器本身存在漏洞,在瀏覽器中輸入一些特殊的字元,可以訪問未授權的文件或者動態腳本文件源碼;

–Web網站的程序編寫存在問題,對用戶提交請求沒有進行適當的過濾,直接使用用戶提交上來的數據。

2、目錄遍歷漏洞

目錄遍歷漏洞是攻擊者向Web伺服器發送請求,通過在URL中或在有特殊意義的目錄中附加「../」、或者附加「../」的一些變形(如「..\」或「..//」甚至其編碼),導致攻擊者能夠訪問未授權的目錄,以及在Web伺服器的根目錄以外執行命令。

3、命令執行漏洞

命令執行漏洞是通過URL發起請求,在Web伺服器端執行未授權的命令,獲取系統信息,篡改系統配置,控制整個系統,使系統癱瘓等。

命令執行漏洞主要有兩種情況:

–通過目錄遍歷漏洞,訪問系統文件夾,執行指定的系統命令;

–攻擊者提交特殊的字元或者命令,Web程序沒有進行檢測或者繞過Web應用程序過濾,把用戶提交的請求作為指令進行解析,導致執行任意命令。

4、文件包含漏洞

文件包含漏洞是由攻擊者向Web伺服器發送請求時,在URL添加非法參數,Web伺服器端程序變數過濾不嚴,把非法的文件名作為參數處理。這些非法的文件名可以是伺服器本地的某個文件,也可以是遠端的某個惡意文件。由於這種漏洞是由PHP變數過濾不嚴導致的,所以只有基於PHP開發的Web應用程序才有可能存在文件包含漏洞。

5、SQL注入漏洞

SQL注入漏洞是由於Web應用程序沒有對用戶輸入數據的合法性進行判斷,攻擊者通過Web頁面的輸入區域(如URL、表單等) ,用精心構造的SQL語句插入特殊字元和指令,通過和資料庫交互獲得私密信息或者篡改資料庫信息。SQL注入攻擊在Web攻擊中非常流行,攻擊者可以利用SQL注入漏洞獲得管理員許可權,在網頁上加掛木馬和各種惡意程序,盜取企業和用戶敏感信息。

6、跨站腳本漏洞

跨站腳本漏洞是因為Web應用程序時沒有對用戶提交的語句和變數進行過濾或限制,攻擊者通過Web頁面的輸入區域向資料庫或HTML頁面中提交惡意代碼,當用戶打開有惡意代碼的鏈接或頁面時,惡意代碼通過瀏覽器自動執行,從而達到攻擊的目的。跨站腳本漏洞危害很大,尤其是目前被廣泛使用的網路銀行,通過跨站腳本漏洞攻擊者可以冒充受害者訪問用戶重要賬戶,盜竊企業重要信息。

根據前期各個漏洞研究機構的調查顯示,SQL注入漏洞和跨站腳本漏洞的普遍程度排名前兩位,造成的危害也更加巨大。

1.2 SQL注入攻擊原理
SQL注入攻擊是通過構造巧妙的SQL語句,同網頁提交的內容結合起來進行注入攻擊。比較常用的手段有使用注釋符號、恆等式(如1=1)、使用union語句進行聯合查詢、使用insert或update語句插入或修改數據等,此外還可以利用一些內置函數輔助攻擊。

通過SQL注入漏洞攻擊網站的步驟一般如下:

第一步:探測網站是否存在SQL注入漏洞。

第二步:探測後台資料庫的類型。

第三步:根據後台資料庫的類型,探測系統表的信息。

第四步:探測存在的表信息。

第五步:探測表中存在的列信息。

第六步:探測表中的數據信息。

1.3 跨站腳本攻擊原理
跨站腳本攻擊的目的是盜走客戶端敏感信息,冒充受害者訪問用戶的重要賬戶。跨站腳本攻擊主要有以下三種形式:

1、本地跨站腳本攻擊

B給A發送一個惡意構造的Web URL,A點擊查看了這個URL,並將該頁面保存到本地硬碟(或B構造的網頁中存在這樣的功能)。A在本地運行該網頁,網頁中嵌入的惡意腳本可以A電腦上執行A持有的許可權下的所有命令。

2、反射跨站腳本攻擊

A經常瀏覽某個網站,此網站為B所擁有。A使用用戶名/密碼登錄B網站,B網站存儲下A的敏感信息(如銀行帳戶信息等)。C發現B的站點包含反射跨站腳本漏洞,編寫一個利用漏洞的URL,域名為B網站,在URL後面嵌入了惡意腳本(如獲取A的cookie文件),並通過郵件或社會工程學等方式欺騙A訪問存在惡意的URL。當A使用C提供的URL訪問B網站時,由於B網站存在反射跨站腳本漏洞,嵌入到URL中的惡意腳本通過Web伺服器返回給A,並在A瀏覽器中執行,A的敏感信息在完全不知情的情況下將發送給了C。

3、持久跨站腳本攻擊

B擁有一個Web站點,該站點允許用戶發布和瀏覽已發布的信息。C注意到B的站點具有持久跨站腳本漏洞,C發布一個熱點信息,吸引用戶閱讀。A一旦瀏覽該信息,其會話cookies或者其它信息將被C盜走。持久性跨站腳本攻擊一般出現在論壇、留言簿等網頁,攻擊者通過留言,將攻擊數據寫入伺服器資料庫中,瀏覽該留言的用戶的信息都會被泄漏。

Web應用漏洞的防禦實現
對於以上常見的Web應用漏洞漏洞,可以從如下幾個方面入手進行防禦:

1)對 Web應用開發者而言

大部分Web應用常見漏洞,都是在Web應用開發中,開發者沒有對用戶輸入的參數進行檢測或者檢測不嚴格造成的。所以,Web應用開發者應該樹立很強的安全意識,開發中編寫安全代碼;對用戶提交的URL、查詢關鍵字、HTTP頭、POST數據等進行嚴格的檢測和限制,只接受一定長度范圍內、採用適當格式及編碼的字元,阻塞、過濾或者忽略其它的任何字元。通過編寫安全的Web應用代碼,可以消除絕大部分的Web應用安全問題。

2) 對Web網站管理員而言

作為負責網站日常維護管理工作Web管理員,應該及時跟蹤並安裝最新的、支撐Web網站運行的各種軟體的安全補丁,確保攻擊者無法通過軟體漏洞對網站進行攻擊。

除了軟體本身的漏洞外,Web伺服器、資料庫等不正確的配置也可能導致Web應用安全問題。Web網站管理員應該對網站各種軟體配置進行仔細檢測,降低安全問題的出現可能。

此外,Web管理員還應該定期審計Web伺服器日誌,檢測是否存在異常訪問,及早發現潛在的安全問題。

3)使用網路防攻擊設備

前兩種為事前預防方式,是比較理想化的情況。然而在現實中,Web應用系統的漏洞還是不可避免的存在:部分Web網站已經存在大量的安全漏洞,而Web開發者和網站管理員並沒有意識到或發現這些安全漏洞。由於Web應用是採用HTTP協議,普通的防火牆設備無法對Web類攻擊進行防禦,因此可以使用IPS入侵防禦設備來實現安全防護。

H3C IPS Web攻擊防禦

H3C IPS入侵防禦設備有一套完整的Web攻擊防禦框架,能夠及時發現各種已經暴露的和潛在的Web攻擊。下圖為對於Web攻擊的總體防禦框架。

圖1:Web攻擊防禦框架,參見:http://blog.csdn.net/moshenglv/article/details/53439579

H3C IPS採用基於特徵識別的方式識別並阻斷各種攻擊。IPS設備有一個完整的特徵庫,並可定期以手工與自動的方式對特徵庫進行升級。當網路流量進入IPS後,IPS首先對報文進行預處理,檢測報文是否正確,即滿足協議定義要求,沒有錯誤欄位;如果報文正確,則進入深度檢測引擎。該引擎是IPS檢測的核心模塊,對通過IPS設備的Web流量進行深層次的分析,並與IPS攻擊庫中的特徵進行匹配,檢測Web流量是否存在異常;如果發現流量匹配了攻擊特徵,IPS則阻斷網路流量並上報日誌;否則,網路流量順利通過。

此Web攻擊防禦框架有如下幾個特點:

1) 構造完整的Web攻擊檢測模型,准確識別各種Web攻擊

針對Web攻擊的特點,考慮到各種Web攻擊的原理和形態,在不同漏洞模型之上開發出通用的、層次化的Web攻擊檢測模型,並融合到特徵庫中。這些模型抽象出Web攻擊的一般形態,對主流的攻擊能夠准確識別,使得模型通用化。

2) 檢測方式靈活,可以准確識別變形的Web攻擊

在實際攻擊中,攻擊者為了逃避防攻擊設備的檢測,經常對Web攻擊進行變形,如採用URL編碼技術、修改參數等。H3C根據Web應用漏洞發生的原理、攻擊方式和攻擊目標,對攻擊特徵進行了擴展。即使攻擊者修改攻擊參數、格式、語句等內容,相同漏洞原理下各種變形的攻擊同樣能夠被有效阻斷。這使得IPS的防禦范圍擴大,防禦的靈活性也顯著增強,極大的減少了漏報情況的出現。

3) 確保對最新漏洞及技術的跟蹤,有效阻止最新的攻擊

隨著Web攻擊出現的頻率日益增高,其危害有逐步擴展的趨勢。這對IPS設備在防禦的深度和廣度上提出了更高的要求,不僅要能夠防禦已有的Web攻擊,更要有效的阻止最新出現的、未公布的攻擊。目前,H3C已經建立起一套完整的攻防試驗環境,可以及時發現潛在Web安全漏洞。同時還在繼續跟蹤最新的Web攻擊技術和工具,及時更新Web攻擊的特徵庫,第一時間發布最新的Web漏洞應對措施,確保用戶的網路不受到攻擊。

4) 保證正常業務的高效運行

檢測引擎是IPS整個設備運行的關鍵,該引擎使用了高效、准確的檢測演算法,對通過設備的流量進行深層次的分析,並通過和攻擊特徵進行匹配,檢測流量是否存在異常。如果流量沒有匹配到攻擊特徵,則允許流量通過,不會妨礙正常的網路業務,在准確防禦的同時保證了正常業務的高效運行。

結束語

互聯網和Web技術廣泛使用,使Web應用安全所面臨的挑戰日益嚴峻,Web系統時時刻刻都在遭受各種攻擊的威脅,在這種情況下,需要制定一個完整的Web攻擊防禦解決方案,通過安全的Web應用程序、Web伺服器軟體、Web防攻擊設備共同配合,確保整個網站的安全。任何一個簡單的漏洞、疏忽都會造成整個網站受到攻擊,造成巨大損失。此外 ,Web攻擊防禦是一個長期持續的工作,隨著Web技術的發展和更新,Web攻擊手段也不斷發展,針對這些最新的安全威脅,需要及時調整Web安全防護策略,確保Web攻擊防禦的主動性,使Web網站在一個安全的環境中為企業和客戶服務。

原文鏈接: