자바에서 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 파일을 만들어서 설정해준다(미완)

 

 

+ Recent posts