本文爲轉載學習web
毫無疑問,安全是任何一個寫於21世紀的web工程中最重要的架構組件之一。在這樣一個時代,計算機病毒、犯罪以及不合法的員工一直存在而且持續考驗軟件的安全性試圖有所收益,所以對你負責的項目綜合合理地使用安全是相當重要的一個元素。安全
本書的寫做遵循了這樣的一個開發模式,這個模式咱們感受提供了一個有用的前提來解決複雜的話題——即便用一個基於Spring3的web工程做爲基礎,以理解使用Spring Security3使其保證安全的概念和策略。架構
無論你是否是已經使用Spring Security仍是隻是對這個軟件有興趣,就都會在本書中獲得有用的信息。在本節的內容中,你可以:框架
檢查一個虛擬安全審計的結果學習
討論web應用一般的一些安全問題網站
學習軟件安全中的幾個核心詞彙和概念spa
若是你已經熟悉基本的安全術語,你能夠直接跳到第二章:Spring Security起步,在哪裏咱們將涉及這個框架的細節。hibernate
這是你做爲軟件開發人員在Jim Bob Circle Pant Online Pet Store(JBCPPets.com)工做的一個清晨,你正在喝你的第一杯咖啡的時候,收到了你主管的如下郵件:設計
To: Star Developer <stardev@jbcppets.com>
From: Super Visor <theboss@jbcppets.com>
Subject: 安全審計
Star,
今天,有一個第三方的安全公司要審計咱們的電子商務網站。儘管我知道你在設計網站的時候已經把安全考慮在內了,但請隨時解決他們可能發現的問題。
Super Visor
什麼?你在設計應用的時候並無過多考慮安全的問題?彷佛你有許多的東西要向安全審計人員學習。首先,讓咱們花一點時間檢查一下要審計的應用吧。
儘管在本書的後續內容中咱們要模擬虛擬的場景,但這個應用的設計以及咱們對其進行的改造都是基於現實世界中真實使用Spring的工程。
這個應用的設計很簡單,使得咱們可以關注於重要的安全方面而不會過多關注ORM的細節和複雜的UI技術。咱們指望你可以參考其餘的資料來掌握示例代碼中所涉及功能的技術。
代碼是基於Spring和Spring Security3編寫而成的,可是它很容易改變爲Spring Security2的例子。關於Spring Security 2和3的細節差別,能夠參照第十三章:遷移至Spring Security,能夠做爲將示例代碼轉換成Spring Security2的幫助材料。
不要以本應用做爲基礎去構建真實的Pet Store在線應用。本應用已經有意識的構建地簡單並關注於本書所要闡述的概念和配置。
本應用遵循標準的三層結構,包括web層、服務層和數據訪問層:
web層封裝了MVC的代碼和功能。在示例代碼中,咱們使用了Spring MVC框架,可是咱們能夠同樣容易的使用Spring Web Flow,Struts甚至是一個對Spring友好的web stack如Apache Wicket。
在一個典型使用Spring Security的web應用中,大量配置和參數代碼位於web層。因此,若是你沒有web應用開發,尤爲是Spring MVC的經驗,在咱們進入更復雜的話題前,你最好仔細看一下基礎代碼並確保你能理解。再次強調,咱們已經盡力讓咱們的應用簡單,把它構建成一個pet store只是爲了給它一個合理的名字和輕量級的結構。能夠將其與複雜的Java EE Pet Clinic示例做爲對比,那個示例代碼展示了不少技術的使用指導。
服務層封裝了應用的業務邏輯。在示例應用中,咱們在數據訪問層前作了一個很薄的façade用來描述如何在特殊的點周圍保護應用的服務方法。
在典型的web工程中,這一層將會包括業務規則校驗,組裝和分解BO以及交叉的關注點如審計等。
數據訪問層封裝了操做數據庫表的代碼。在不少基於Spring的工程中,這將會在這裏發現使用了ORM技術如hibernate或JPA。它爲服務層暴露了基於對象的API。在示例代碼中,咱們使用基本的JDBC功能完成到內存數據庫HSQL的持久化。
在典型的web工程中,將會使用更爲複雜的數據訪問方式。由於ORM,即數據訪問,開發人員對其很迷惑。因此爲了更清晰,這一部分咱們儘量的對其進行了簡化。