The request was rejected because the URL contained a potentially malicious String “;“问题的正确解决姿势
問題的復(fù)盤
首先這個(gè)問題出現(xiàn)的時(shí)機(jī)是,當(dāng)用戶訪問特定的連接(如http://localhost/index)時(shí)沒有權(quán)限,被重定向到登錄頁面http://localhost/login。為了登錄成功后再跳轉(zhuǎn)到目標(biāo)訪問的頁面http://localhost/index,Spring Security會(huì)在Cookie中存一個(gè)信息,標(biāo)記一為一個(gè)jsessionid。重定向時(shí)Servlet容器,也就是tomcat之類的會(huì)把jsessionid編碼到重定向url,也就是http://localhost/login;jsessionid=xxxxxxxxxx。這種請(qǐng)求會(huì)被Spring Security的StrictHttpFirewall攔截,引發(fā)進(jìn)而The request was rejected because the URL contained a potentially malicious String ";"錯(cuò)誤。
安全策略
OWASP指出在URL中暴露jsessionid是非常危險(xiǎn)的舉動(dòng),可能導(dǎo)致會(huì)話固定攻擊,因此不建議上述的行為。
解決方案
目前有兩種解決方案。
允許url攜帶jsessionid
這種在網(wǎng)上很多,如果瀏覽器的cookie被禁用或者你的應(yīng)用可以容忍上述安全漏洞你可以在Spring Security中采取這種方式:
httpSecurity.sessionManagement().enableSessionUrlRewriting(true);這種不建議使用。
修改servlet容器的會(huì)話機(jī)制
在 Spring Boot 中配置 Tomcat 的跟蹤模式:
server.servlet.session.tracking-modes=cookie先自我介紹一下,小編13年上師交大畢業(yè),曾經(jīng)在小公司待過,去過華為OPPO等大廠,18年進(jìn)入阿里,直到現(xiàn)在。深知大多數(shù)初中級(jí)java工程師,想要升技能,往往是需要自己摸索成長(zhǎng)或是報(bào)班學(xué)習(xí),但對(duì)于培訓(xùn)機(jī)構(gòu)動(dòng)則近萬元的學(xué)費(fèi),著實(shí)壓力不小。自己不成體系的自學(xué)效率很低又漫長(zhǎng),而且容易碰到天花板技術(shù)停止不前。因此我收集了一份《java開發(fā)全套學(xué)習(xí)資料》送給大家,初衷也很簡(jiǎn)單,就是希望幫助到想自學(xué)又不知道該從何學(xué)起的朋友,同時(shí)減輕大家的負(fù)擔(dān)。添加下方名片,即可獲取全套學(xué)習(xí)資料哦
總結(jié)
以上是生活随笔為你收集整理的The request was rejected because the URL contained a potentially malicious String “;“问题的正确解决姿势的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 零基础学Python6
- 下一篇: 如何进入他人计算机硬盘,手机如何访问电脑