inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 부트 개념과 활용

스프링 웹 MVC 7부: Thymeleaf

Thymeleaf XSS 관련 질문드립니다.

1582

이상민

작성한 질문수 3

0

안녕하세요.

우선 기선님의 엄청난 팬입니다 ㅎㅎ

좋은 강의 덕분에 많은 것을 배웠습니다.

다름이 아니라, Thymeleaf에서 자체적으로 XSS Prevention을 지원해주는지 여쭤보고 싶네요..

XSS 테스트를 위해 샘플 프로젝트를 진행하던 중 Thymeleaf를 이용해서 렌더링 시 '<'가 &lt로

'>'가 &gt로 알아서 바뀌어 들어가는 것을 확인했는데요.

이게 Model에서 view로 내릴 때, 스프링 부트가 해주는 것인지 혹은 thymeleaf가 지원해주는 것인지 잘 모르겠네요.. 답변해주시면 감사하겠습니다.

그리고, @RequestBody의 JSON으로 XSS 공격 시 어떠한 방법으로 막아야 할 지 방법도 좀 알려주시면 감사하겠습니다.

spring java spring-boot

답변 3

1

Seongjin Hong

아주 오래된 질문이지만, 지나가다가 답변해옵니다. Thymeleaf th:text의 기본 escaping은 xss방어의 수단으로 쓸 수 있습니다.

JSON으로 떨어질때는 mime type을 javascript가 실행될 수 없는 타입으로 설정하면 스크립트 태그들이 실행되지 않습니다. 대표적으로 json/application 이 있습니다. 따라서 딱히 건들지 않으면 XSS 방어는 기본적으로 적용됩니다.

0

이상민

답변 감사합니다. 많은 도움이 되었습니다.

0

백기선

그건 XSS 방지 기능이라기 보단 Thymeleaf의 th:text에서 기본으로 제공하는 escaping 기능이라고 합니다.

https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html 여기서 3.2 항목을 참고해 보세요.

두번째 질문에 대해서는 우선 입력값을 escaping해서 저장할 수도 있고, 아니면 응답으로 내보낼 때 escaping하는 방법이 있겠네요. 저라면 두 경우 모두 특정 문자열들만 escaping 처리하도록 만들고 싶네요. 일부는 정말 태그 그대로 입력 받아야 하는 경우도 있을테니까요. 그러려면.. JSON을 쓰고 계시니까 JacksonJson을 사용한다고 가정하고, ObjectMapper가 사용하는 JsonSerializer를 사용해보면 어떨까 싶네요. 제 REST API 강좌 그걸 사용하는 예제가 나오긴 합니다만 String 타입 변환에 써본적이 없어서 실제로 해봐야 알겠네요.

자동설정 만들기 1부의 Holoman 관련 문의 드립니다.

0

84

1

라이브러리 개발 예제 강의를 찾습니다 !!!

0

225

2

강의 진행되로 똑같이 했는데 jquery가 실행되지 않았는데

0

310

1

HateOas 가 업데이트가 되어서, "Spring HATEOAS" 코드를 아래처럼 하셔야 될겁니다.

0

364

2

springSecurit jwt에 대해서 질문드립니다.

0

343

1

섹션2 자동설정 부분 질문있습니다.

0

249

1

mongo shell 명령어 대체 mongo -> mongosh

0

1012

1

데이터베이스 마이그레이션 강의에서 질문 있습니다

0

707

0

자동 설정 만들기 2부에서 질문 있습니다

0

413

1

의존성 관리 응용 부분에서 질문 있습니다

0

321

0

Intellij 에서 빈 주입할때 계속 빨간줄이 뜨는데 어떻게 고쳐야 할까요

0

1184

1

자동설정으로 다른 프로젝트 빈 사용(번외질문)

0

363

0

CREATE TABLE 예제 따라하다가 'expected "identifier"; SQL statement:' 오류나는 경우

2

2212

2

junit5 관련하여 질문드립니다.

0

307

2

맨 처음 프로젝트 생성 후 Run 시 에러

0

535

2

외부 설정과 관련된 질문입니다.

0

255

1

test와 runner account.setEmail에 동일한 값 입력

0

323

1

컨트롤러 view 호출

0

265

1

JVM 과 arguments 는 뭔가요???

0

1170

1

pom 테그 에러

0

355

1

안녕하십니까 기선님!!!!! webclient와 비동기관련 질문요청드립니다

0

1554

1

webEnvironment 내장 톰캣

0

228

1

application.yml 파일 분리

0

393

1

안녕하세요 기선님 서블릿 어플리케이션 구조에 대해 질문드립니다

0

281

1