成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

3.4、路徑模式與后綴匹配

yeooo / 907人閱讀

摘要:路徑模式比較當(dāng)一個(gè)匹配多個(gè)模式時(shí),會(huì)進(jìn)行一次分類來(lái)尋找最佳匹配。擁有數(shù)量最少的變量和通配符的匹配的路徑模式被認(rèn)為是最佳匹配。配置后綴模式匹配為關(guān)閉的,或只限于使用顯式注冊(cè)的后綴。

????這一部分是對(duì) Spring 5 文檔的直接翻譯,連接是這個(gè)。這一部分的示例不再貼代碼,請(qǐng)到這個(gè)項(xiàng)目的 mvc 分支下查看,本篇示例的控制器名稱是 PathPatternController。

1)路徑模式

????除了 URI 模板,注解 @RequestMapping 和所有的組合 @RequestMapping 變種也支持 Ant 式的路徑模式(例如:/myPath/*.do)。URI 模板變量和 Ant 式的標(biāo)記組合使用也是支持的(例如:/owners/*/pets/{petId})。

2)路徑模式比較

????當(dāng)一個(gè) URL 匹配多個(gè)模式時(shí),會(huì)進(jìn)行一次分類來(lái)尋找最佳匹配。

????擁有數(shù)量最少的 URI 變量和通配符的匹配的路徑模式被認(rèn)為是最佳匹配。比如“/hotels/{hotel}/*”有一個(gè) URI 變量和一個(gè)通配符,而“/hotels/{hotel}/**”有一個(gè)URI變量和量個(gè)通配符,所以前者被認(rèn)為是最佳匹配。

????如果兩個(gè)模式有相同數(shù)量的通配符或URI變量,那么最長(zhǎng)的那個(gè)被認(rèn)為是最佳匹配。比如“/foo/bar*”比“/foo/*”長(zhǎng),所以前者是最佳匹配。

????如果兩個(gè)模式有相同數(shù)量的通配符或URI變量,且長(zhǎng)度相同,那么通配符最少的那個(gè)被認(rèn)為是最佳匹配。比如“/hotels/{hotel}”相對(duì)于“/hotels/*”是最佳匹配。

????還有一些額外的特殊規(guī)則:
????① 默認(rèn)的映射模式“/**”比任何其他匹配模式的優(yōu)先級(jí)都低。比如:“/api/{a}//{c}”的優(yōu)先級(jí)高于“/**
????② 前綴模式比如“/public/**”的優(yōu)先級(jí)低于任何其他的不包含雙通配符的模式。比如“/public/path3/{a}//{c}”的優(yōu)先級(jí)更高。
????全部的詳細(xì)信息參見AntPathMatcher中的AntPatternComparator。注意,PathMatcher可以自定義(見“路徑匹配”)。

3)帶有占位符的路徑模式

????注解 @RequestMapping 中的模式支持對(duì)本地屬性和/或系統(tǒng)屬性與環(huán)境變量使用${…?}占位符。這在控制器映射到的路徑需要通過配置文件自定義的情形下會(huì)很有用。占位符的更多信息,可以去類 PropertyPlaceholderConfigurer的 Javadoc 中查看。

4)后綴模式匹配

????Spring MVC 默認(rèn)執(zhí)行“.*”后綴匹配,所以一個(gè)映射到“/person”的控制器隱式地映射到“/person.*”。這讓請(qǐng)求通過URL路徑(比如/person.pdf,/person.xml)來(lái)獲取資源很簡(jiǎn)單。

????后綴模式匹配可以被關(guān)閉,或者把它限制到一組顯式注冊(cè)為協(xié)商好內(nèi)容的路徑擴(kuò)展。這通常建議用于在普通請(qǐng)求映射中減少歧義,比如“/person/{id}”中的一個(gè)點(diǎn)可能不代表文件擴(kuò)展名,如“/person/[email protected]”和“/person/[email protected]”。而且,就像下面解釋的那樣,后綴模式匹配和內(nèi)容協(xié)商可能被用在一些情形中來(lái)企圖進(jìn)行惡意攻擊,所以有很好的理由來(lái)限制它們。

????后綴匹配配置參見“路徑匹配” ,內(nèi)容協(xié)商配置參見“內(nèi)容協(xié)商”。

5)后綴模式匹配和 RFD

????反射型文件下載(Reflected file download:RFD)攻擊在 2014 年最初由 Trustwave 在一篇論文中描述。這種襲擊是類似于 XSS,因?yàn)樗蕾囉诜从吃陧憫?yīng)中的輸入(如查詢參數(shù),URI 變量)。不像在 HTML 中插入 JavaScript,一次 RFD 攻擊依賴于瀏覽器執(zhí)行一個(gè)下載并把響應(yīng)當(dāng)作可執(zhí)行腳本來(lái)處理,就像雙擊了像擁有擴(kuò)展名.bat、.cmd的文件。

????在 Spring MV C中 @ResponseBody 和 ResponseEntity 的方法面臨危險(xiǎn),因?yàn)樗鼈兛梢凿秩究蛻舳四軌蛲ㄟ^ URL 路徑擴(kuò)展請(qǐng)求的不同類型的內(nèi)容。注意到即不禁止后綴模式匹配也不單純?yōu)閮?nèi)容協(xié)商目的禁止使用文件拓展名將有效防止 RFD 攻擊。

????為了全面防范 RFD 攻擊,在渲染響應(yīng)體之前,Spring MVC 添加了一個(gè)Content-Disposition:inline;filename=f.txt響應(yīng)頭來(lái)暗示一個(gè)修正過的安全的下載文件。這僅在URL路徑包含一個(gè)文件拓展名既不在白名單中,又沒有因內(nèi)容協(xié)商目的而顯式注冊(cè)時(shí)才這么做。當(dāng)直接在瀏覽器中鍵入 URL 時(shí),它可能會(huì)有副作用。

????很多常用的路徑擴(kuò)展名默認(rèn)在白名單中。此外,REST API 調(diào)用通常不是直接在瀏覽器中用作 URL 。使用自定義 HttpMessageConverter 實(shí)現(xiàn)的應(yīng)用可以為內(nèi)容協(xié)商顯式注冊(cè)文件擴(kuò)展名,響應(yīng)頭 Content-Disposition 不會(huì)被添加到這樣的擴(kuò)展名中。參見“內(nèi)容協(xié)商”。

????這最初在CVE-2015-5211工作報(bào)告中引進(jìn)。下面是這份報(bào)告的補(bǔ)充建議:

編寫而非避開JSON 響應(yīng)。這也是 OWASP XSS 中的建議。怎樣用 Spring 這樣做的例子見 spring-jackson-owasp。

配置后綴模式匹配為關(guān)閉的,或只限于使用顯式注冊(cè)的后綴。

配置內(nèi)容協(xié)商時(shí),設(shè)置屬性 “useJaf” 和 “ignoreUnknownPathExtensions” 為 false,這樣的話,如果URL中包含未知的擴(kuò)展名,就會(huì)返回一個(gè)406錯(cuò)誤。注意,如果 URL 可能會(huì)有一個(gè)點(diǎn)在結(jié)尾的話,這不是一個(gè)好的選擇。

Add X-Content-Type-Options: nosniff header to responses. Spring Security 4 does this by default.

????最后但同樣重要的是,如有不準(zhǔn)確的地方,請(qǐng)告知;水平有限,最后一句沒有翻譯,如有你有正確的理解,也請(qǐng)告知。郵箱:[email protected]

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/65143.html

相關(guān)文章

  • 【Amaple教程】1. 啟動(dòng)路由

    摘要:開始編寫具體的代碼前,首先需啟動(dòng)單頁(yè)模式并進(jìn)行簡(jiǎn)單配置。我們?cè)陂_發(fā)包的文件中調(diào)用函數(shù)并傳入一個(gè)對(duì)象進(jìn)行啟動(dòng)路由并配置單頁(yè)應(yīng)用。繼續(xù)學(xué)習(xí)下一節(jié)教程模塊也可回顧上一節(jié)教程前言 開始編寫具體的代碼前,首先需啟動(dòng)單頁(yè)模式并進(jìn)行簡(jiǎn)單配置。在src/index.html中引入amaple.js框架文件后我們就可以使用am這個(gè)全局對(duì)象。我們?cè)陂_發(fā)包的src/config.js文件中調(diào)用am.star...

    zhangwang 評(píng)論0 收藏0
  • 【Amaple教程】1. 啟動(dòng)路由

    摘要:開始編寫具體的代碼前,首先需啟動(dòng)單頁(yè)模式并進(jìn)行簡(jiǎn)單配置。我們?cè)陂_發(fā)包的文件中調(diào)用函數(shù)并傳入一個(gè)對(duì)象進(jìn)行啟動(dòng)路由并配置單頁(yè)應(yīng)用。繼續(xù)學(xué)習(xí)下一節(jié)教程模塊也可回顧上一節(jié)教程前言 開始編寫具體的代碼前,首先需啟動(dòng)單頁(yè)模式并進(jìn)行簡(jiǎn)單配置。在src/index.html中引入amaple.js框架文件后我們就可以使用am這個(gè)全局對(duì)象。我們?cè)陂_發(fā)包的src/config.js文件中調(diào)用am.star...

    crossoverJie 評(píng)論0 收藏0
  • 【Amaple教程】1. 啟動(dòng)路由

    摘要:開始編寫具體的代碼前,首先需啟動(dòng)單頁(yè)模式并進(jìn)行簡(jiǎn)單配置。我們?cè)陂_發(fā)包的文件中調(diào)用函數(shù)并傳入一個(gè)對(duì)象進(jìn)行啟動(dòng)路由并配置單頁(yè)應(yīng)用。繼續(xù)學(xué)習(xí)下一節(jié)教程模塊也可回顧上一節(jié)教程前言 開始編寫具體的代碼前,首先需啟動(dòng)單頁(yè)模式并進(jìn)行簡(jiǎn)單配置。在src/index.html中引入amaple.js框架文件后我們就可以使用am這個(gè)全局對(duì)象。我們?cè)陂_發(fā)包的src/config.js文件中調(diào)用am.star...

    李世贊 評(píng)論0 收藏0
  • ZABBIX 3.4的新增功能,炫的眼花繚亂

    摘要:監(jiān)控解決方案發(fā)布了一個(gè)穩(wěn)定分支版本版本發(fā)布了很多大家預(yù)期的驚艷功能,并保持一貫的簡(jiǎn)單性和靈活性。下面我們將介紹一部分的新功能。請(qǐng)注意,通過執(zhí)行遠(yuǎn)程命令默認(rèn)情況下禁用。 ZABBIX監(jiān)控解決方案發(fā)布了一個(gè)穩(wěn)定分支版本!ZABBIX 3.4版本發(fā)布了很多大家預(yù)期的驚艷功能,并保持一貫的簡(jiǎn)單性和靈活性。下面我們將介紹一部分ZABBIX 3.4的新功能。重新設(shè)計(jì)的儀表板在3.4中,你會(huì)發(fā)現(xiàn)儀表板的改...

    hidogs 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<