《從零打造項目》系列文章
專注于為中小企業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)融安免費做網(wǎng)站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了1000多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉變。Java應用安全框架工具
- 比MyBatis Generator更強大的代碼生成器
ORM框架選型
- SpringBoot項目基礎設施搭建
- SpringBoot集成Mybatis項目實操
- SpringBoot集成MybatisPlus項目實操
- SpringBoot集成Spring Data JPA項目實操
數(shù)據(jù)庫變更管理
數(shù)據(jù)庫變更管理:Liquibase or Flyway
SpringBoot結合Liquibase實現(xiàn)數(shù)據(jù)庫變更管理
定時任務框架
- Java定時任務技術分析
- SpringBoot結合Quartz實現(xiàn)定時任務
- SpringBoot結合XXL-JOB實現(xiàn)定時任務
緩存
- 待更新
安全框架
- Java應用程序安全框架
開發(fā)規(guī)范
- 待更新
在構建應用程序時,必須首先考慮其安全性。每個應用程序都是通過網(wǎng)絡發(fā)布的,隨之而來的是安全、隱私和完整性風險的威脅。
根據(jù)開放 Web 應用程序安全項目 (OWASP),最重要的安全風險是:
大致定義如下:
訪問OWASP Top Ten以了解有關這些漏洞的更多信息。
Java 框架提供代碼重用能力,同時消除了構建樣板代碼任務的需要。讓我們來看看一些優(yōu)秀的基于 Java 的框架,以提高應用程序的安全性并加速您的業(yè)務增長。
JAAS(Java 認證和授權服務)JAAS 用作保護 Java 應用程序的 API。它包括許多為身份驗證和授權而設計的 Java 包。JAAS 是 Java SE 1.3 中的一個可選包,之后,它從 1.4 版開始成為 JDK 的一部分。
JAAS 可用于兩個目的:
JAAS 中的身份驗證以可插入的方式執(zhí)行。它允許應用程序擺脫基本的身份驗證技術。
查看 API 和示例的參考指南。
Spring SecuritySpring Security 是一個可以根據(jù)企業(yè)應用需求進行修改的框架。它克服了身份驗證和訪問控制的困難。
身份驗證是設置主要是他們聲明的人(可能是用戶、設備或一些可以為您的應用程序執(zhí)行操作的不同機器)的過程。授權是確定專業(yè)是否可以在您的應用程序內執(zhí)行操作的系統(tǒng)。
詳細學習參考官方文檔。
Apache ShiroApache Shiro 被認為是一個非常有效的 Java 安全框架,它在所有類型的 Java 應用程序上進行加密、授權和會話管理,無論它們的大小如何。
Shiro 被設計成一個直觀且易于使用的框架,同時提供強大的安全功能。它是框架中立的,因此可以與任何 Java 支持的框架無縫協(xié)作。
有關詳細文檔,參閱官方網(wǎng)站。
HDIVHDIV 是一個 Java Web 應用程序安全框架。它通過添加安全功能并維護 API 和框架規(guī)范來擴展 Web 應用程序的行為。
它廣泛用于基于 Struts、Spring MVC、Grails、JSTL 等構建的應用程序,因為它為開發(fā)人員提供了急需的透明度,而不會增加應用程序開發(fā)的任何復雜性。
查看官方文檔以獲取更多詳細信息。
OACCOACC 是用于 Java 的應用程序安全框架,專為細粒度(對象級)訪問控制而設計。它專門為每個實施和控制實用程序的身份驗證和授權需求提供功能齊全的 API - 它是有效且靈活的安全模型的完整實現(xiàn)。
OACC 利用抽象的援助來保護實用項目。這一關鍵抽象允許 OACC 提供豐富的 API,包括授予、撤銷和查詢功能,用于存儲和處理應用程序的安全關系。
查看官方文檔以獲取更多詳細信息。
如何選擇安全框架上述有五種安全框架,實際應用中該如何選擇呢?首先聲明,本人對 Spring Security 和 Apache Shiro 有所了解,具體使用過 Spring Security,其他三種首次聽說。
JAAS(Java 認證和授權服務)JAAS 雖然作為 JDK 的一部分,但我對它知之甚少,詳細介紹可以參考官方文檔,如何使用可以參考這篇文章。
為什么企業(yè)級應用不使用 JAAS,我也沒找到專業(yè)解釋,自己琢磨了一番,發(fā)現(xiàn)了點門道。
先對 JAAS API 中常用的一些類和接口做個簡單的說明。
LoginModule :確認用戶的合法性(使用CallbackHandler或者其他類方法),并分配訪問權限principal給subject;
LoginContext:為了實現(xiàn)用戶鑒別,建立相應的環(huán)境,從配置文件中導入規(guī)則;
CallbackHandler:回調處理器,負責與用戶(代碼擁有者和執(zhí)行者)交互,確認其身份的合法性;
Subject:表示登陸處理的目標,即一個被鑒別的用戶。并可關聯(lián)一個或多個pirncipal;
Principal:表示具有訪問權限的一個實體,可以看作是可以執(zhí)行某種操作的證件。
這些類和接口的關系有個生動的比喻:一個學校,入學的時候校方(LoginModule)根據(jù)學生(Subject)的入學通知來確定其合法 性,這個過程交由某工作人員(CallbackHandler)執(zhí)行,(CallbackHandler)確認后,(LoginModule)給不同 (Subject)根據(jù)其身份發(fā)給相關的證件(Principal),有了該證件就可以訪問對應的資源,(Subject)根據(jù)自己的 (Principal)的級別可以使用和訪問學校不同資源。
而上述這些 JAAS 的核心類,在 Spring Security 中有類似存在,Spring Security 提供了一個包來將身份驗證請求委托給 Java 身份驗證和授權服務 (JAAS)。比如說抽象類AbstractJaasAuthenticationProvider
和 接口JaasAuthenticationCallbackHandler
。
package org.springframework.security.authentication.jaas;
import java.io.IOException;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.UnsupportedCallbackException;
import org.springframework.security.core.Authentication;
public interface JaasAuthenticationCallbackHandler {void handle(Callback callback, Authentication auth) throws IOException, UnsupportedCallbackException;
}
對比 JAAS 中的 CallbackHandler
package javax.security.auth.callback;
public interface CallbackHandler {void handle(Callback[] callbacks)
throws java.io.IOException, UnsupportedCallbackException;
}
更多介紹推薦閱讀官方文檔。
由上可知,我們出于某些原因,沒有直接使用 JAAS,但是如果使用了 Spring Security,也算是間接地使用 JAAS。
Spring SecuritySpring Security 最早不叫 Spring Security ,叫 Acegi Security,叫 Acegi Security 并不是說它和 Spring 就沒有關系了,它依然是為 Spring 框架提供安全支持的。事實上,Java 領域的框架,很少有框架能夠脫離 Spring 框架獨立存在。
Acegi Security 基于 Spring,可以幫助我們?yōu)轫椖拷⒇S富的角色與權限管理,但是最廣為人詬病的則是它臃腫繁瑣的配置,這一問題最終也遺傳給了 Spring Security。
但是和 Shiro 相比,人們對 Spring Security 的評價依然中重量級、配置繁瑣,對于初學者來說比較難。直到 Spring Boot 橫空出世,這些問題統(tǒng)統(tǒng)都得到緩解。在 Spring Boot 或者 Spring Cloud 中,如果想選擇一個權限管理框架,幾乎毫無疑問的選擇 Spring Security,Shiro 在這個環(huán)境下已經(jīng)不具備優(yōu)勢了。
綜上,如果你所接觸的項目多是 SpringBoot 或者 SpringCloud,那么推薦學習使用 Spring Security。
Apache Shiro無論是 Shiro 還是 Spring Security,最最核心的功能,無非就是兩方面:
其功能特點如下圖所示:
Shiro 比 Spring 更容易使用,功能強大、且 簡單、靈活。是 Apache 下的項目比較可靠,且不跟任何的框架或者容器綁定,可以獨立運行。如果是 Spring 項目,不建議使用 Shiro。
HDIVHDIV 之前根本沒有聽說過,官網(wǎng)介紹寫的比較厲害:Hdiv 抵御了 OWASP 前 10 名中包含的 90% 的應用程序安全風險——對最關鍵的 Web 應用程序安全漏洞的廣泛共識——例如 SQL 注入、跨站點腳本、跨站點請求偽造、數(shù)據(jù)篡改和暴力攻擊. Hdiv 提供了比當前任何可用的解決 Web 應用程序安全風險的解決方案更高的有效性。
同時還為一些知名企業(yè)提供安全服務,如下圖所示:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-aAUJOfmg-1669618897120)(https://camo.githubusercontent.com/5e1d5e9c11c99f3dc8f505d3a875280378d1da48a8ed77042a23cfca2b035f0e/68747470733a2f2f6864697673656375726974792e636f6d2f696d672f737570706f727465642d746563686e6f6c6f676965732e706e67)]
而且在 Github 介紹中提到已與 SpringMVC 集成,相較于 Spring Security 功能不夠完整,且學習成本較大,以及適用范圍不夠廣,所以不推薦使用。
OACCOACC (讀音 Oak)是 Object Access Control serviCe 的縮寫。它是一個高級的 Java? 應用安全框架. OACC 提供高性能 API ,為 Java應用程序提供了基于權限的授權服務。簡而言之,OACC 可以讓你的應用通過發(fā)出問題來保證安全:“實體 ‘A’ 是否被允許在實體 ‘B’ 上進行操作 ‘p’。
在官網(wǎng)可以看到,OACC 很早就不再更新了。
此外,如果你想使用 OACC,還需要在對應的數(shù)據(jù)庫中執(zhí)行必要的腳本,比如說 MySQL 數(shù)據(jù)庫。
這意味著你需要按照 OACC 的要求來設計表結構,這是不能容忍的。理所當然,我們不考慮該框架。
小結綜上,Spring Security 和 Shiro 是目前最受歡迎的兩款安全框架,但因為 SpringBoot 和 SpringCloud 的火熱,讓同為 Spring 家族的 Spring Security 也變得火熱起來,所以推薦學習使用 Spring Security。
參考文獻Java 安全框架
構建安全應用程序的前 5 個 Java 應用程序安全框架
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
分享題目:Java應用程序安全框架-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://jinyejixie.com/article34/dipspe.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供面包屑導航、微信公眾號、標簽優(yōu)化、Google、網(wǎng)頁設計公司、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內容