스프링부트+jsp로 배달사이트 만들기-17 xss 방어하기
2021. 12. 9. 14:15ㆍ스프링부트
사용자가 리뷰 작성 시
<script>
alert(1);
</script>
와 같은 내용을 끼워 넣게 되면 매장입장에선 의도치 않은 스크립트가 실행되게 됩니다
네이버의 Lucy Xss filter를 사용하게 되면 이런 공격을 간단하게 막을 수 있습니다
Lucy Xss filter를 사용하기 위해 해당 위치에 추가합니다
pom.xml
<!-- Lucy-xss-servlet-filter -->
<dependency>
<groupId>com.navercorp.lucy</groupId>
<artifactId>lucy-xss-servlet</artifactId>
<version>2.0.1</version>
</dependency>
WebConfig
//Lucy Xss filter 적용
@Bean
public FilterRegistrationBean<XssEscapeServletFilter> getFilterRegistrationBean(){
FilterRegistrationBean<XssEscapeServletFilter> registrationBean = new FilterRegistrationBean<>();
registrationBean.setFilter(new XssEscapeServletFilter());
registrationBean.setOrder(1);
registrationBean.addUrlPatterns("/*");
return registrationBean;
}
src/main/resource아래에 lucy-xss-servlet-filter-rule.xml을 추가합니다
lucy-xss-servlet-filter-rule.xml
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://www.navercorp.com/lucy-xss-servlet">
<defenders>
<!-- XssPreventer 등록 -->
<defender>
<name>xssPreventerDefender</name>
<class>com.navercorp.lucy.security.xss.servletfilter.defender.XssPreventerDefender
</class>
</defender>
<!-- XssSaxFilter 등록 -->
<defender>
<name>xssSaxFilterDefender</name>
<class>com.navercorp.lucy.security.xss.servletfilter.defender.XssSaxFilterDefender
</class>
<init-param>
<param-value>lucy-xss-sax.xml</param-value> <!-- lucy-xss-filter의 sax용 설정파일 -->
<param-value>false</param-value> <!-- 필터링된 코멘트를 남길지 여부, 성능 효율상 false 추천 -->
</init-param>
</defender>
<!-- XssFilter 등록 -->
<defender>
<name>xssFilterDefender</name>
<class>com.navercorp.lucy.security.xss.servletfilter.defender.XssFilterDefender
</class>
<init-param>
<param-value>lucy-xss.xml</param-value> <!-- lucy-xss-filter의 dom용 설정파일 -->
<param-value>false</param-value> <!-- 필터링된 코멘트를 남길지 여부, 성능 효율상 false 추천 -->
</init-param>
</defender>
</defenders>
<!-- default defender 선언, 별다른 defender 선언이 없으면 default defender를 사용해 필터링
한다. -->
<default>
<defender>xssPreventerDefender</defender>
</default>
<!-- global 필터링 룰 선언 -->
<global>
<!-- 모든 url에서 들어오는 'gParam' 파라미터는 필터링 되지 않으며 또한 'g'로 시작하는 파라미터도 필터링 되지
않는다. -->
<params>
<param name="gParam" useDefender="false" />
<param name="g" usePrefix="true" useDefender="false" />
</params>
</global>
<!-- URL 별 필터링 룰 선언 -->
</config>
이제 글 작성 시 스크립트를 끼워넣어도 텍스트 그대로 출력 되는걸 볼 수 있습니다
'스프링부트' 카테고리의 다른 글
스프링부트+jsp로 배달사이트 만들기-20 주문목록 수정/페이징 (0) | 2021.12.09 |
---|---|
스프링부트+jsp로 배달사이트 만들기-19 매장목록 수정/페이징 (0) | 2021.12.09 |
스프링부트+jsp로 배달사이트 만들기-18 주문상세 페이지 (0) | 2021.12.09 |
스프링부트+jsp로 배달사이트 만들기-16 리뷰 사진 올리기 (0) | 2021.12.09 |
스프링부트+jsp로 배달사이트 만들기-15 리뷰작성 (0) | 2021.12.08 |