1. 보안을 위해 스프링 시큐리티에서 csrf를 사용하는 경우 별도의 url matcher가 필요하다.


이니시스 폼 전송 할 때 csrf 값을 지정해줄 수 없기 때문.


따라서 결제 관련 url에는 csrf가 적용되지 않도록 해야 한다.


xml 설정을 쓸 경우 어렵지 않게 matcher 빈을 등록할 수 있다.


다음은 그 예다. 기본 matcher(get 등에 대해 적용 안하는 것)에 특정 url에는 필터링 하지 않도록 하는 matcher를 추가하는 것이다. 


스프링 scrf에데가도 다음 빈을 matcher로 쓰겠다고 알려주면 된다.


자세한 내용은 레퍼런스를 참고해보시길.


<bean id="csrfMatcher"

    class="org.springframework.security.web.util.matcher.AndRequestMatcher">

    <constructor-arg>

    <list>

    <bean class="org.springframework.security.web.csrf.CsrfFilter.DefaultRequiresCsrfMatcher"/>

    <bean id="aa" class="org.springframework.security.web.util.matcher.NegatedRequestMatcher">

        <constructor-arg>

        <bean class="org.springframework.security.web.util.matcher.AntPathRequestMatcher">

            <constructor-arg value="/customer/money/**"/>

          </bean>

        </constructor-arg>

        </bean>

    </list>

    </constructor-arg>

</bean>




2. 헤더 옵션을 추가해줘야 한다.


사용자가 결제를 누르고 결제창을 띄웠다가 닫을 때, 이니시스는 js를 호출하는데 저걸 안해주면 결제창이 제대로 안된다.


결제창이 iframe이라 뭔가 다른 경로에서 호출하면 문제가 있는 듯 하다.


다음처럼 간단히 이것만 추가해주면 된다.

<sec:headers>

<sec:frame-options policy="SAMEORIGIN" />

</sec:headers>


자세한 내용은 레퍼런스를 참고해 보시길.







Posted by 타다키치
,