網際網路安全下的Spring Security之初體驗

2020-12-10 AI課工場

作為千禧年一代,我們很多人生活在這個網際網路的時代,享受著網際網路給我們帶來的驚喜,卻經常忽略它給我們帶來的一些不好的東西。

人們常說任何事物的發展都是一把「雙刃劍」,給我們帶來便利的同時也會帶來一些麻煩;網際網路技術也是這樣,它改變了我們的生活方式,比如:以微信為代表的社交方式,以支付寶、微信為代表的的支付方式、以滴滴為代表的出行方式等,但同時它也讓我們的信息更加容易獲取和不安全,如果有一天微信和支付寶不知道哪根神經搭錯了,覺得錢不夠花,倆人一合計,把你的購物和社交的信息都放到網上賣了,估計你也沒辦法,當然這種假設幾乎是不太可能發生的。但是網際網路的發展確實是存在著一些比較容易被人們忽略的安全問題。

當年的3Q大戰,曾經坊間「刪庫跑路」的傳說,竟然成了現實;我們暫且不去討論這些事情本身,這背後都傳達了一個信息,就是安全很重要;如果你要是問我什麼是網際網路公司(所有公司)中最重要的事情,那一定是安全!安全!安全!重要的事情說三遍。

作為一名程序猿,在Web應用開發中,安全永遠是產品的最基礎需求,也是最重的技術,想像一下,你們熬夜通宵吃泡麵花了幾個月做了一狂轉炫酷吊炸天的網站,結果被一個剛入行的毛頭小夥兒一下高掛了,以後還有何顏面在這一行混。

在Web開發過程中有一些比較常見的黑客攻擊方式,比如:XSS(跨站腳本攻擊)、CSRF(跨站請求偽造攻擊)、SQL注入、命令行注入、DDoS攻擊、DNS劫持等,據史料記載,程序猿這個群體都有一種特質是:在Get到一個新技術的時候一定會去騷擾一下別人的網站去證明自己技術有多牛逼(我也這麼幹過,邪惡臉)。

沒有攻擊過別人的網站的黑客,不是好程序猿!

對於Java攻城獅來說,Web應用的安全的重要性自然是不言而喻的,那在JavaWeb開發領域也有很多解決安全性的框架,常用的有

Spring SecurityShiro今天先來了解下SpringSecurity這個安全管理框架

什麼是SpringSecurity

SpringSecurity是一個基於Spring的企業應用系統安全訪問控制解決方案的安全框架,從名字我們也可以看出來它和Spring有著千絲萬縷的關係,所以它可以和Spring進行無縫集成,對於Web應用的安全性,如用戶認證(是否是合法用戶)和用戶授權(是否具有某種權限)SpringSecurity都提供了很好支持,並且支持自定義,給開發人員提供了更大的靈活性。今天咱們就來學習一下使用SpringBoot 集成SpringSecurity,我們都知道SpringBoot也是基於Spring的,所以SpringBoot對於SpringSecurity也提供很好的支持,通常情況下,Spring生態內的技術在使用的時候都是比較容易上手的,接下裡就讓我們實戰為先吧!

Spring Boot 集成SpringSecurity

創建SpringBoot項目工程

首先,使用SpringInitializr創建SpringBoot 基礎工程,然後引入web依賴。接著我們就需要引入SpringSecurity了,引入SpringSecurity依賴有兩種方式:

在工程的pom文件中加入Spring Security依賴。<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency>使用Spring Initializr在創建項目的時直接勾選Spring Security,項目建成後會自動在pom文件加入Spring Security的依賴。

添加SpringSecurity配置信息

在application.properties中添加SpringSecurity的相關配置信息,這裡主要配置登錄用戶名和密碼。

# Spring Security配置

# 配置登錄用戶的名

spring.security.user.name=admin

# 登錄密碼

spring.security.user.password=admin

SpringSecurity初體驗

創建一個SecurityController,編寫測試方法,然後直接啟動項目,通過瀏覽器訪問http://localhost:8080/index首頁資源。

/*** Security登錄驗證demo*/@RestControllerpublic class SecurityController {/*** 首頁資源* @return/*@GetMapping("index") public String index() { return "登錄成功!!!--歡迎來到Spring Security!!!"; }}

發現頁面被重定向到了一個http://localhost:8080/login路徑,需要我們登錄驗證,這個就是Spring Security默認提供的登錄頁面(其實還提好看的如果不喜歡的話,自己也可以定製);也就是它對所有的資源都做了權限校驗,只有合法的用戶才可以訪問。

然後,輸入我們剛才在application.properties配置了登錄的用戶名和密碼,輸入之後我們看到了如下:

我們成功的訪問到了首頁的資源,此時說明我們合法了,以後再也不用擔心查水錶了,是不是很簡單呢?

相關焦點

  • 學習學習SpringSecurity
    Spring Security思維導圖簡介SpringSecurity是Spring下的一個安全框架,與shiro 類似,一般用於用戶認證(Authentication)和用戶授權(Authorization)兩個部分,常與與SpringBoot相整合。
  • spring security 整合 springboot 入門案例
    序言前面我們學習了 spring security 與 springmvc 的整合入門教程。這一節我們來學習一下 spring security 與 springboot 整合,為了力求簡單,此處不演示資料庫相關操作。
  • 船新「漲薪秘籍」阿里巴巴內部爆款頂配版Spring Security筆記
    Spring SecuritySpring Security是一個能夠為基於Spring的企業應用系統提供聲明式的安全訪問控制解決方案的安全框架。由於它是Spring生態系統中的一員,因此它伴隨著整個Spring生態系統不斷修正、升級,在spring boot項目中加入springsecurity更是十分簡單,使用Spring Security 減少了為企業系統安全控制編寫大量重複代碼的工作。
  • SpringSecurity + JWT,從入門到精通!
    org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
  • Spring Boot Security 詳解
    </groupId> <artifactId>spring-boot-starter-security</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId>
  • 「SpringSecurity-1」Springboot+Security+Oauth2授權碼模式
    話不多說開始搞……項目搭建項目中使用到的相關框架的版本號:springboot版本:2.3.0.RELEASEspring-security-oauth2版本:2.3.3.RELEASE創建認證伺服器添加依賴pom.xml中添加依賴,特別說明這是一個父子項目,父pom中添加了spring-boot-dependencies
  • Spring Security 5.1 GA 正式發布! - OSCHINA - 中文開源技術交流...
    Spring 安全框架 Spring Security 5.1 GA 現已正式發布!POM<dependencies>    <!
  • springboot+springsecurity實現前後端分離簡單實現!
    通過各種方式學習springsecurity,在B站、騰訊課堂、網易課堂、慕課網沒有springsecurity的前後端分離的教學視頻,那我就去csdn去尋找springsecurity博客,發現幾個問題:要麼就是前後端不分離,要麼就是通過內存方式讀取數據,而不是通過資料庫的方式讀取數據,要麼就是大佬們給的代碼不全、把代碼講的太繞,關鍵部分沒有注釋
  • 超全的springboot+springsecurity實現前後端分離簡單實現!
    通過各種方式學習springsecurity,在B站、騰訊課堂、網易課堂、慕課網沒有springsecurity的前後端分離的教學視頻,那我就去csdn去尋找springsecurity博客,發現幾個問題:  實在不行我又跑去github上找開源項目學習,github由於是外國網站,國內訪問速度有點慢!!
  • Spring Security 5.1.0.M2 發布,Spring 安全框架
    源碼下載 >>> https://github.com/spring-projects/spring-security/releases/tag/5.1.0.M2
  • Spring Security基於表達式的權限控制
    Spring Security源碼分析十三:Spring Security 基於表達式的權限控制Spring Security是一個能夠為基於Spring的企業應用系統提供聲明式的安全訪問控制解決方案的安全框架。
  • 安全的Spring Cloud配置
    我的GitHub存儲庫sample-spring-cloud-security在分支secure_config中提供了示例應用程式原始碼:https : //github.com/piomin/sample-spring-cloud-security/tree/secure_config。
  • Spring Security 5.2.2、5.1.8 和 5.0.14 發布
    默認情況下,不要使用 Accept: text/event-stream 來緩存請求 提供 AuthorizedClientServiceOAuth2AuthorizedClientManager 的反應式實現 刪除重定向驗證的多餘驗證 刪除 SecurityExpressionRoot 中不必要的代碼 提取 HTTPS 文檔更新說明:https://github.com/spring-projects
  • 「SpringSecurity-3」Springboot+Security + Oauth2授權碼模式
    上一篇我們實現了授權碼的整個流程,並且添加了資源伺服器,通過獲取到的token去訪問資源伺服器提供的REST接口,現在對第一篇中提到的幾個小任務進行調研修改下。(4)獲取授權碼的用戶登錄頁面是否可以定製,如何操作?授權登錄頁面自定義實現授權登陸頁修改第一步修改security配置文件。
  • Spring Security接管Swagger認證授權,我發現僅用了3行關鍵代碼!
    今天主要分享內容為:在Spring Security下如何接管Swagger的認證授權工作。1.添加依賴假定你對Swagger和Spring Security已經有一定的基礎,現在開始檢查你的項目中是否添加了Swagger和Spring Security的依賴。
  • 安全:到底是safety,還是security?
    公安部的英文表達是Ministry of Public Security,這裡的「公安」指「公共安全」,那麼,這裡的security能不能用safety來替換?還有,過去幾年,我們屢次被「食品安全」事件刷屏,也引發了一些恐慌,英文報導中關於這樣的事件一般都用food safety表示;而如果你看到了food security這個說法,那麼文章討論的一定不是三聚氰胺之類的問題,而是糧食供應短缺或者極端天氣導致糧食欠收之類的內容,也就是中文中對應的「糧食安全」。這二者的區別在哪裡?為什麼不能用同一個詞表示呢?
  • Spring boot + Spring Security實現權限管理
    實現步驟:1.修改login.html2.在com.sxbang.fridaysecuritytask.config.security.handler包下創建MyAuthenticationSuccessHandler類,使它實現AuthenticationSuccessHandler接口,重寫onAuthenticationSuccess
  • Spring Boot 和 Spring 到底有啥區別?
    spring-boot-starter-data-jpaspring-boot-starter-securityspring-boot-starter-testspring-boot-starter-webspring-boot-starter-thymeleaf有關starter的完整列表,請查看Spring文檔。
  • SpringSecurity 默認表單登錄頁展示流程源碼
    提供的默認表單登錄頁 它是如何展示的的流程,涉及1.FilterSecurityInterceptor,2.ExceptionTranslationFilter ,3.DefaultLoginPageGeneratingFilter 過濾器,並且簡單介紹了 AccessDecisionManager 投票機制1.準備工作(體驗
  • Spring 和 Spring Boot 之間到底有啥區別?
    一些最常用的是:spring-boot-starter-data-jpaspring-boot-starter-securityspring-boot-starter-testspring-boot-starter-webspring-boot-starter-thymeleaf有關 starter的完整列表,請查看Spring文檔。