2013-08-05 9 views
0

현재 actionform의 validate 메소드가 액션의 execute 메소드보다 먼저 발생한다는 문제점이 있습니다.Struts 1.2 ActionForms & isTokenValid CSRF

사용자가 자신의 요청을 제출할 수 있으며 유효성 검사가 완료된 모든 필수 필드가 있어야하며 isTokenValid (요청) 메서드를 사용하면 요청이 유효하지 않음을 알 수 있습니다. 액세스 거부 페이지로 전달하십시오. 그러나 그들이 위조 된 요청의 모든 필수 필드를 완료하지 않으면 validate 메소드는 오류를 리턴하고 오류 메시지가 표시된 실제 페이지 (.jsp)로 전달됩니다.

이 문제를 어떻게 방지 할 수 있습니까?

+0

왜 그들이 모두에 액세스 할 수없는 페이지로받을 수 있나요? 어쨌든 몇 가지 옵션이 있지만 현재의 앱 흐름에 달려 있습니다. 예를 들어 인증 필터, 맞춤 요청 프로세서, "수동"또는 기본 요청 프로세서 등을 통해 유효성 검사를 수행하고 있습니까? –

+0

구현 중입니다. CSRF 보호. 따라서 사용자가 로그인하여 실수로 악의적 인 사이트의 요청을 시작하게됩니다. 대부분의 요청은 isTokenValid를 사용하여 방지되지만, 유효성 검사가 작업을 시작하기 전에 실패하기 때문에 액세스 거부 페이지 대신 .jsp로 전달됩니다. 모든 일은 사용자가 악의적 인 사람이 아닌 페이지로 전달된다는 점에서 여전히 위험 할 수는 없지만 여전히 예방하고 싶습니다. 나는 스트럿츠에 새로 왔지만 customForms 로직과 함께 actionForm의 validate 메소드를 사용했다. –

답변

0

토큰을 사용하여 Struts1에서 CSRF 예방을 구현하려면 JSP 페이지에 직접 액세스하지 않아야합니다.

사용자는 Struts 액션을 통해 양식에 접근해야하며 JSP 페이지의 양식으로 전달되기 전에 조치로 saveToken (요청)이 호출됩니다.

일반적으로 JSP로 직접 전달하는 경우 ActionForward에서 상속 한 동작으로 전달하도록 변경할 수 있습니다. 실행 내에서 부모 ActionForward 메소드를 호출하여 전달할 수 있습니다. 새로운 작업 클래스에 추가 논리 제한을 구현할 수도 있습니다.

별도의 스레드에 스트럿츠 CSRF 질문에 대한이 답변이 유용 할 수 있습니다 https://stackoverflow.com/a/5339391/6136697