Zamówienie tego aspektu Bezpieczeństwo/Minded Security evaluation of SpEL (google docs link), do którego prawdopodobnie odwołuje się artykuł (w konkretnym przypadku Spel).
Opisują, w jaki sposób niektóre wiosenne znaczniki JSP podwójnie oceniają wyrażenia EL. W takich przypadkach użytkownik może przesłać dane do serwera w postaci Spel, np. jako parametr żądania z wartością ${bean.val}
(URL zakodowanej)
http://...?exp=$%7Bbean.val%7D
stron Wewnątrz JSP, wyrażenie ${param.exp}
zostaną rozwiązane do tekstu ${bean.val}
która sama w sobie jest bezpieczny. Jeśli jednak wyrażenie to znajduje się w obrębie atrybutu sprężystego znacznika JSTL, ta rozstrzygnięta wartość może zostać ponownie oceniona, np. w spring:message
tagu:
<spring:message message="${param.exp}" />
spowoduje wartości ${bean.val}
przepuszcza się przez do znacznika spring:message
który oceni metody bean.getVal()
. Dlatego mamy teraz kod przesłany przez klienta i uruchomiony na serwerze.
proszę zobaczyć znacznie wyższa głosowałem odpowiedź poniżej, która jest faktyczna – blackdrag
@blackdrag dzięki, już to przeczytałem. Zarówno ten post, jak i Pieter's dostarczają dwóch różnych odpowiedzi na oryginalne pytanie: "Czy ktoś może rzucić więcej światła na ten temat?". Ta odpowiedź (mająca już prawie rok) z nadzieją zawiera trochę szczegółów na temat tej luki, podczas gdy odpowiedź Pietera opisuje historię SpringSources w radzeniu sobie z nią i wersje wiosny, w których problem został rozwiązany. IMO obie "rzucają światło" na różne sposoby i obie są "rzeczywistymi" odpowiedziami. – krock
Zgadzam się, oboje rzucają światło na tę kwestię.Tyle tylko, że zostało to naprawione przed 2012 r. Brakuje najbardziej wartościowych informacji, że raport był już nieaktualny w chwili, gdy go zadano. Dlatego nie uważam już tej odpowiedzi za "aktualną". – blackdrag