真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

詳解springsecurity安全防護(hù)

前言

在項(xiàng)城等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需網(wǎng)站開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),成都全網(wǎng)營銷推廣,外貿(mào)網(wǎng)站建設(shè),項(xiàng)城網(wǎng)站建設(shè)費(fèi)用合理。

xss攻擊(跨站腳本攻擊):攻擊者在頁面里插入惡意腳本代碼,用戶瀏覽該頁面時,腳本代碼就會執(zhí)行,達(dá)到攻擊者的目的。原理就是:攻擊者對含有漏洞的服務(wù)器注入惡意代碼,引誘用戶瀏覽受到攻擊的服務(wù)器,并打開相關(guān)頁面,執(zhí)行惡意代碼。
xss攻擊方式:一、反射性攻擊,腳本代碼作為url參數(shù)提交給服務(wù)器,服務(wù)器解析執(zhí)行后,將腳本代碼返回給瀏覽器,最后瀏覽器解析執(zhí)行攻擊代碼;二、存儲性攻擊,和發(fā)射性攻擊的區(qū)別是,腳本代碼存儲在服務(wù)器,下次在請求時,不用再提交腳本代碼。其中一個示例圖如下所示:

詳解spring security安全防護(hù)

CSRF攻擊:跨站請求偽造攻擊,CSRF是一種欺騙受害者提交惡意請求的攻擊,并劫持受害者的身份和特權(quán),并以受害者的身份訪問未授權(quán)的信息和功能。序列圖如下所示:

詳解spring security安全防護(hù)

同步器Token

解決XSS攻擊和CSRF攻擊的一個推薦方法就是同步器Token,就是在post的請求中,增加一個token,每次請求到來,服務(wù)器都會驗(yàn)證請求中的token和服務(wù)器期望的值是否一致,如果不一致,服務(wù)器將請求視為非法的,整個過程的示例圖如下所示:

詳解spring security安全防護(hù)

在spring security中如果使用的是 @EnableWebMvcSecurity而不是@EnableWebSecurity,同步器Token是默認(rèn)打開的,通過http().csrf().disable()可以關(guān)閉同步器token功能。spring security發(fā)現(xiàn)token無效后,會返回一個403的訪問拒絕,不過可以通過配置AccessDeniedHandler類處理InvalidCsrfTokenException異常來定制行為。

spring security雖然默認(rèn)是打開同步器token保護(hù)的,但是也提供了一個顯示打開的行為即http().csrf(),同時需要在html的form表單中添加以“

如果請求的是json或ajax請求,如何使用同步器token防護(hù)那?
json請求的話,我們可以在header的元數(shù)據(jù)中添加token防護(hù),代碼如下所示:





...

ajax請求的話,可是使用如下代碼:

$(function () {
var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");
$(document).ajaxSend(function(e, xhr, options) {
xhr.setRequestHeader(header, token);
});
});

Synchronizer Token的常見問題

1.超時
因?yàn)閠oken是存儲在httpsession中的,所以token存在超時的問題,一旦超時,則配置的accessDeniedHandler將接受一個異常,或者spring security直接拒絕訪問;
2.登錄
為了防止偽造的登錄請求,在登錄的form中也需要添加token,而token又是存儲在HttpSession中,也就是說一旦發(fā)現(xiàn)token屬性,就會創(chuàng)建一個HttpSession,這和無狀態(tài)架構(gòu)模式可能會產(chǎn)生一些沖突;
3.注銷
添加CSRF將更新LogoutFilter過濾器,使其只使用HTTP POST。這確保了注銷需要一個CSRF令牌,并且惡意用戶不能強(qiáng)制注銷您的用戶。也就是說,注銷不再是一個get請求,而是一個post請求;

spring security支持的安全response header

spring security 支持的response header 包括:Cache-Control,Content-type options,HTTP Strict Transport Security,X-Frame-Options,X-XSS-Protection 如果你使用的是WebSecurityConfigurerAdapter 配置方式,則這些頭都是默認(rèn)支持的,你可以通過調(diào)用 http.header().disable()關(guān)閉這些缺省的頭。當(dāng)然你也可以單獨(dú)配置,但是如果你單獨(dú)配置的話,只有你配置的頭會起作用,其他的頭都不再默認(rèn)支持了。下面分別來討論一下這些響應(yīng)header的含義;

Cache-Control

如果不加任何控制,瀏覽器通常會緩存你的認(rèn)證相關(guān)信息,這在一定程度上會造成你的信息泄露,因此在默認(rèn)情況下,spring security會在響應(yīng)頭里加入緩存控制如下所示:

Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0

當(dāng)然你也可以通過 http.header().cacheControl()方法單獨(dú)打開緩存控制,你也可以通過HttpServletResponse.setHeader(String,String)方法對特殊的響應(yīng)做處理,從而確保css js 圖片能夠合適地被緩存,在spring mvc中,可以通過配置進(jìn)行設(shè)置,下面的代碼對所有的資源都增加了緩存:

@EnableWebMvc
public class WebMvcConfiguration
   extends WebMvcConfigurerAdapter {
    @Override
    public void addResourceHandlers(
    ResourceHandlerRegistry registry) {
    registry
    .addResourceHandler("/resources/**")
    .addResourceLocations("/resources/")
    .setCachePeriod(3_155_6926);
    }
// ...
}

Content-type Options

歷史上很多很多瀏覽器都能可以通過對請求類型的content進(jìn)行嗅探,猜測請求類型,從而提高用戶體驗(yàn),但是這會帶來XSS攻擊。例如有些站點(diǎn)允許用戶向其提交有效的postScript腳本,并查看他。惡意用戶可能提交一個有效的js文件,并使用它執(zhí)行XSS攻擊。spring security默認(rèn)是禁止進(jìn)行嗅探的。

HTTP Strict Transport Security

當(dāng)你訪問一個站點(diǎn)是,例如www.baidu.com,省略了https協(xié)議,潛在的你會受到中間人攻擊,為了減少這種情況,就是告知瀏覽器,當(dāng)你輸入某個地址時,應(yīng)該使用https協(xié)議。如何讓瀏覽器該host是一個hsts站點(diǎn)那?其中一種方法就是,增加Strict-Transport-Security 到響應(yīng)頭中,如下例所示:

Strict-Transport-Security: max-age=31536000 ; includeSubDomains

上述例子告知瀏覽器,該站點(diǎn)在一年內(nèi)訪問都使用https協(xié)議,includeSubDomains說明該站點(diǎn)的子域名也使用https協(xié)議訪問。

X-frame-optiont

X-Frame-Options HTTP 響應(yīng)頭是用來給瀏覽器指示允許一個頁面可否在 ,