2012-09-18 5 views
1

매개 변수 변조 문제를 해결하기 위해 struts2 응용 프로그램을 개발 중입니다. 내 행동에 ParameterNameAware 인터페이스를 구현하여이 문제를 해결할 수 있다고 들었지만,이 조건을 설명하는 가장 좋은 예는 찾지 못했습니다. 누구나 나에게 ParameterNameAware 사용법에 대한 좋은 예를 제공 할 수 있습니까? 빠른 답변 정말 감사하겠습니다.ParameterNameAware 인터페이스 (Struts2)를 사용하여 매개 변수 변조 방지

답변

1

이 인터페이스에 대한 아이디어는 유효한 매개 변수 이름의 목록을 유지하고이 목록 (허용 목록)에없는 요청 매개 변수를 거부하여 해커가 원하지 않는 양식을 포함하려고 할 때 매우 유용합니다. 필드 값을 특정 상황에서 실행될 가능성이있는 숨겨진 변수로 사용합니다. 예를 들어, 서버 쪽에서 거부를 만들 수있는 여러 가지 양식 필드를 포함합니다 (> 10000 등).

이것을 구현하면 현재 요청 범위에서 원하지 않는 매개 변수를 즉시 거부 할 수 있습니다.이 상황을보다 잘 제어 할 수 있습니다.

가능성있는 구현을 다음과 같이

acceptableParameterName 방법을 ParameterNameAware 인터페이스를 구현하고 오버라이드 (override) :

public boolean acceptableParameterName(String parameterName) { 

      boolean allowedParameterName = true ; 

      if (parameterName.contains("session") || parameterName.contains("request")) { 

        allowedParameterName = false ; 

      } 

      return allowedParameterName; 
    } 

당신은 그것을에서 getter와 setter 메소드를 가지고있다 양식 빈에서이 인터페이스를 구현해야합니다. 이 특정 예에서 현재 요청에 요청이나 세션과 같은 양식 필드 변수가 포함되어 있으면 실패 시나리오입니다. 여기서는 단지 전형적인 예입니다. 이 링크에는 완전한 문서가 있습니다. Class ParametersInterceptor

+0

고맙습니다. 이것에 대해 조금 혼란 스럽습니다. 그 과정을 말하는 것입니다. acceptableParameterName()이 호출되는 빈도 및 내 액션 클래스에서 허용되는 매개 변수 (허용 목록)를 찾는 빈도 (setter 및 getters가 작동하는 데 사용되는 모든 변수입니까?) 이미 말했듯이 공격자가 너무 많은 매개 변수로 쿼리 문자열을 변경하면 정의 된 입력 데이터 변수가없는 액션 클래스에서 어떻게 받아 들일 수 있습니까? 오류 404가 표시됩니다. 혼란 스러울 경우 저는 정말로 혼란 스럽습니다. newbie struts2 :-) – Rony

+0

@Rocky_Rony, 귀하의 화이트리스트는 요청에서 예상되는 양식 필드 변수 중 미리 정의 된 집합입니다. 귀하의 bean 클래스에서이 인터페이스를 구현해야합니다. 내 대답을 업데이트했습니다. – UVM

관련 문제