자바에서 HTML 파싱
jsoup jar 다운로드
html 태그들을 자바 오브젝트로 변환한다
예제1
예제2
web.xml 필터 임시적으로 해제
HtmlParser 만들기
-----------------------
XSS 쿠키 하이재킹
XSS
자바스크립트를 페이지에 집어넣어서 공격
쿠키 하이재킹
쿠키는 사이트마다 다른 값을 가지고 있음, getCookie하면 쿠키값을 얻어올 수 있다.
이것을 방지하기 위해 스크립트 공격 못하도록 막으면 홈페이지의 디자인도 망가질 수 있다.
-----
xss공격 수동으로
HttpOnly를 쓰지않은 경우
HttpOnly를 사용한 경우
----------------------------------------
자바스크립트 공격을 막기 위해
getter를 이용해서 파싱
1. 코드를 이용해서 개별적으로 막는방법
http://naver.github.io/lucy-xss-filter/kr/#_xsspreventer_2
Lucy XSS Filter
XSS 공격이 가능한 HTML 요소를 신뢰할 수 있는 코드로 변환하거나 삭제하는 기능을 제공한다. 공격이 가능하지 않은 HTML 요소는 허용을 한다. 4.1. 설정 파일 Lucy-XSS Filter의 필터링 규칙은 화이트리
naver.github.io
의존하는 파일들도 다운
라이브러리 추가
코드 테스트
결과
2. xml파일을 이용해서 서버 전체에 xss막기
https://github.com/naver/lucy-xss-servlet-filter
naver/lucy-xss-servlet-filter
Contribute to naver/lucy-xss-servlet-filter development by creating an account on GitHub.
github.com
라이브러리 다운
의존하는 파일도 추가
web.xml 에 해당 코드 넣기
<filter>
<filter-name>xssEscapeServletFilter</filter-name>
<filter-class>com.navercorp.lucy.security.xss.servletfilter.XssEscapeServletFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>xssEscapeServletFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
필터는 xml 파일 가장 아래에 입력한다. (인코딩이 모두 된 후의 문자를 필터링해야 되기 때문)
xssEscapeServletFilter가 모든 url 패턴을 가로채도록 만든다
필터를 커스터마이징 하려면
com.navercorp.lucy.security.xss.servletfilter.XssEscapeServletFilter 를 상속받아서
새 클래스를 만들고 그 내부에서 커스터마이징 해야한다.
하지만 그것이 번거롭기 때문에
아래와 같이 lucy-xss-servlet-filter-rule.xml 파일을 이용한다.
java src 루트에 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에서 들어오는 globalParameter 파라메터는 필터링 되지 않으며
또한 globalPrefixParameter로 시작하는 파라메터도 필터링 되지 않는다. -->
<params>
<param name="globalParameter" useDefender="false" />
<param name="globalPrefixParameter" usePrefix="true" useDefender="false" />
</params>
</global>
<!-- url 별 필터링 룰 선언 -->
<url-rule-set>
<!-- url disable이 true이면 지정한 url 내의 모든 파라메터는 필터링 되지 않는다. -->
<url-rule>
<url disable="true">/disableUrl1.do</url>
</url-rule>
<!-- url1 내의 url1Parameter는 필터링 되지 않으며 또한 url1PrefixParameter로 시작하는 파라메터도 필터링 되지 않는다. -->
<url-rule>
<url>/url1.do</url>
<params>
<param name="url1Parameter" useDefender="false" />
<param name="url1PrefixParameter" usePrefix="true" useDefender="false" />
</params>
</url-rule>
<!-- url2 내의 url2Parameter1만 필터링 되지 않으며 url2Parameter2는 xssSaxFilterDefender를 사용해 필터링 한다. -->
<url-rule>
<url>/url2.do</url>
<params>
<param name="url2Parameter1" useDefender="false" />
<param name="url2Parameter2">
<defender>xssSaxFilterDefender</defender>
</param>
</params>
</url-rule>
</url-rule-set>
</config>
결과
추가설정을 하기 위해서는 lucy-xss-sax.xml 파일을 만들어서 설정해준다(미완)
'Web > Jsp' 카테고리의 다른 글
Jsoup HTML파싱 // 미리보기 (0) | 2020.06.09 |
---|---|
200608 블로그만들기 7 // 상세보기 / 페이지수정 / 회원정보수정 / a태그와 자바스크립트 (0) | 2020.06.08 |
섬머노트(에디터) 추가하기 (1) | 2020.06.04 |
JSP 서블릿 web.xml로 파일접근을 막는 방법 (0) | 2020.06.04 |
JSP 서블릿 프로젝트 이름을 갑자기 수정해야 할 경우 수정법 (0) | 2020.06.04 |