Tendo atualizado para o spring security 4.2.4, descobri que StrictHttpFirewall agora é o padrão. Infelizmente não funciona bem com spring MVC @MatrixVariable desde ";" não são mais permitidos. Como contornar isso?
Exemplo:
@GetMapping(path = "/{param}")
public void example(@PathVariable String param,
@MatrixVariable Map<String, String> matrix) {
//...
}
Isso poderia ser chamado assim:
mockMvc.perform(get("/someparam;key=value"))
E o mapa da matriz seria preenchido. Agora a segurança da primavera o bloqueia.
org.springframework.security.web.firewall.RequestRejectedException: The request was rejected because the URL contained a potentially malicious String ";"
at org.springframework.security.web.firewall.StrictHttpFirewall.rejectedBlacklistedUrls(StrictHttpFirewall.java:140)
Eu poderia usar um HttpFirewall personalizado que permitisse ponto-e-vírgulas. Existe uma maneira de usar @MatrixVariable sem usar caracteres proibidos?
BTW: o javadoc está incorreto https://docs.spring.io/autorepo/docs/spring-security/4.2.x/apidocs/index.html?org/springframework/security/web/firewall/StrictHttpFirewall.html
Desde a:
5.0.1
Eu acho que foi backport?
Você pode diluir o firewall padrão de segurança Spring usando sua instância personalizada definida do StrictHttpFirewall (por sua própria conta e risco)
@Bean
public HttpFirewall allowUrlEncodedSlashHttpFirewall() {
StrictHttpFirewall firewall = new StrictHttpFirewall();
firewall.setAllowUrlEncodedSlash(true);
firewall.setAllowSemicolon(true);
return firewall;
}
E então use este bean de firewall personalizado no WebSecurity (o Spring boot não precisa desta mudança)
@Override
public void configure(WebSecurity web) throws Exception {
super.configure(web);
// @formatter:off
web.httpFirewall(allowUrlEncodedSlashHttpFirewall());
...
}
Isso deve funcionar com Spring Security 4.2.4+, mas é claro que traz alguns riscos!
Conforme mencionado por Крис em um comentário, se você preferir usar uma abordagem XML, você pode adicionar a seguinte parte ao seu securityContext.xml (ou o que quer que seu xml-config relacionado à spring-security seja chamado):
<bean id="allowSemicolonHttpFirewall"
class="org.springframework.security.web.firewall.StrictHttpFirewall">
<property name="allowSemicolon" value="true"/>
</bean>
<security:http-firewall ref="allowSemicolonHttpFirewall"/>
A <bean>parte define um novo StrictHttpFirewallbean com o id allowSemicolonHttpFirewallque é então definido como firewall http padrão na <security>tag referenciando o id.
Eu usei a combinação dos dois seguintes
The request was rejected because the URL contained a potentially malicious String ";"Spring MVC Missing matrix variableComo estou usando Spring Security com Spring Web, tive que fazer as duas coisas. E o problema agora está resolvido.
Eu descobri que usar o @MatrixVariableseguinte padrão é útil. Primeiro no URL {num}deve ser mencionado para usá-lo como@MatrixVariable
@RequestMapping(method = RequestMethod.GET,value = "/test{num}")
@ResponseBody
public ResponseEntity<String> getDetail(@MatrixVariable String num){
return new ResponseEntity<>("test"+num, HttpStatus.OK);
}
Jana Duggar foi aberta sobre sua busca pelo amor. Aqui está tudo o que ela disse sobre o assunto e sua janela de cinco anos para o casamento.
O astro de 'Outlander', Sam Heughan, revelou recentemente o que vai levar do set para relembrar Jamie Fraser, o papel que o tornou uma estrela.
'She Loves You' foi escrita em uma hora, gravada em um dia, e foi a música dos Beatles com uma de suas melhores apresentações de sua carreira.
Dolly Parton e sua avó Bessie tiveram um relacionamento especial. Vovó Parton estava muito doente, mas isso não impediu Dolly de pregar uma peça nela.
As origens do Islã remontam ao início do século VII na Península Arábica. O Islã começou na cidade de Meca, onde um homem chamado Maomé, um comerciante bem-sucedido de uma tribo poderosa, recebeu uma revelação divina.
Você pode achar que o carvalho ou a nogueira são madeiras resistentes, mas quando se trata da madeira mais dura do mundo, elas nem chegam perto.
O oceano é repleto de beleza, mas também esconde algumas das criaturas marinhas mais assustadoras do planeta. Muitos desses animais espreitam nas profundezas do oceano, no mundo escuro e de alta pressão do fundo do mar.
Se você está enfrentando criaturas hostis ou se preparando para cenários PvP, conhecer os melhores encantamentos de espada no Minecraft pode te dar uma grande vantagem. Encantar espadas permite causar mais dano, aumentar a quantidade de itens obtidos de criaturas e prolongar a durabilidade da sua espada.
“Children” traz uma participação especial de grande nome e algumas notícias devastadoras
Este RAV4 está em excelentes condições e está preparado para um jogo de cadeiras musicais.
Imagens de drone capturaram bombeiros parecendo lutar para apagar o incêndio.
Eyes of Wakanda está diretamente relacionado ao MCU, além de atualizações sobre X-Men '97, What If..., Demolidor e muito mais.
A editora-chefe de longa data, que ingressou na Vogue americana em 1988, anunciou a notícia em uma reunião com a equipe na manhã de quinta-feira, 26 de junho.
O anel de noivado de Kate Middleton pertenceu à Princesa Diana antes do Príncipe William pedi-la em casamento. Descubra tudo o que há para saber sobre a peça histórica aqui.
John Cleese se casou com sua esposa, Jennifer Wade, em 2012. Aqui está tudo o que você precisa saber sobre a esposa de John Cleese, Jennifer Wade.
Patton Oswalt se casou com sua esposa, a também atriz Meredith Salenger, em 2017. Aqui está tudo o que você precisa saber sobre a esposa de Patton Oswalt, Meredith Salenger.
Isso me atinge De repente, como tantas vezes acontece É o meio do caminho tudo de novo <Não, não aquele no Pacífico, seu marrom, aquele no carnaval> Todas as manchetes em voz alta…..
Em 2022, com o lançamento do GPT-3, a habilidade de escrita parece se tornar menos importante. Com a IA, pessoas com redação ruim também podem gerar funcionários de qualidade.
No mundo acelerado e competitivo de hoje, a carreira desempenha um papel significativo no crescimento pessoal, na estabilidade financeira e na satisfação geral com a vida. No entanto, muitos indivíduos encontram-se presos em um ciclo implacável de estagnação e insatisfação, definhando gradualmente em suas vidas profissionais.
Na semana passada, notei um comunicado de imprensa, enviado via PressGazette (um site de notícias da mídia britânica). O artigo anunciava que a Acast, a empresa de publicidade e hospedagem de podcast Scandi, lideraria um consórcio de "provavelmente os editores mais influentes" em podcasting.