아무도 나를 도와주세요 수 없습니다. 기존 웹 응용 프로그램을 보호하도록 지정되었습니다.스프링 MVC 보안 토큰 기반 인증
문제 : 사용자가 이미 응용 프로그램에 로그인하면 (즉 세션이 활성 상태임을 나타냄) 공격자가 입력 필드를 추측하고 URL을 저장하고 유사한 페이지를 만들고 하이퍼 링크를 보낼 수 있습니다. 사용자가 해당 링크를 클릭하면 자바 스크립트를 통과하지 않고 스프링 컨트롤러에 도달합니다. 세션이 활성 상태이므로 공격자 데이터를 데이터베이스에 저장합니다.
다음은 현재 사용중인 것입니다. 1) 봄 보안
<http auto-config="true">
<intercept-url pattern="/**" access="ROLE_ADMIN, ROLE_HR" />
<custom-filter position="PRE_AUTH_FILTER" ref="siteminderFilter" />
</http>
<beans:bean id="siteminderFilter" class="com.mywbsite.security.UserFilter">
<beans:property name="authenticationManager" ref="authenticationManager" />
<beans:property name="continueFilterChainOnUnsuccessfulAuthentication" value="false"/>
</beans:bean>
이 메서드를 호출 할 때 응용 프로그램에 사용자가 로그인 할 때 사용자가 어떤 컨트롤러/자바
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println(request.getParameter(BaseConstants.DV_USER_SESSION_IDENTIFIER));
logger.info(request.getParameter(BaseConstants.DV_USER_SESSION_IDENTIFIER));
logger.info("Existing the UserFilter.doFilter method...");
}
에게 호출 아무것도 수행 할 때이 메소드가 불려
protected Object getPreAuthenticatedPrincipal(HttpServletRequest request) {
String userId = request.getHeader("uid");
logger.info("<<<<<<<<<<<<<<<<<<<<<userId>>>>>>>>>>>>>>>>>>>>>>> : "+userId);
return userId;
}
처음으로
솔루션 : 컨트롤러/필터에서 요청이 내 애플리케이션 또는 다른 곳에서 발생하는지 확인해야합니다.
다음은 구현하려는 것입니다.
- getPreAuthenticatedPrincipal() 메소드 내에 임의의 토큰을 만들고이를 세션에 저장하십시오.
- 세션에서 변수 가져 오기 jsp의 숨겨진 변수에 넣기
- 사용자가 아무 작업을 수행하면 값이있는 숨겨진 변수를 전달하고 요청 매개 변수로 컨트롤러에 전달하십시오.
- 컨트롤러/필터에서 세션에서 임의 값을 가져 와서 요청 매개 변수에서 숨겨진 값을 가져옵니다. 이제 비교해 보라. 일치하면 정상적인 작업을 수행하고 그렇지 않으면 오류 페이지를 반환합니다.
이제 위의 솔루션을 구현하면 각 JSP에 숨겨진 변수 코드를 작성하고 각 요청 및 요청 매개 변수에서 컨트롤러로 전달해야합니다.
간편하게 도와 줄 수 있습니까? 미리 감사드립니다.
siteminder를 사용하려고합니까? 단일 사인온을 구현합니까? 세션 변수를 명시 적으로 처리 할 필요가 없습니다. –
@JerinJoseph : 방금 문제를 업데이트했으며이를 해결하기 위해 어떻게 생각하고 있습니까? 다시 보시겠습니까? – SKumar