2012-08-06 6 views
0

기존 웹 기반 응용 프로그램에서 작업하고 있습니다.Java EE : 응용 프로그램 URL 해킹 방지

이제 URL 해킹이라고 불리는 것에 대해 애플리케이션을 보호해야합니다. 예를 들어 customerId 1의 고객이 로그인하여 프로필을 보는 경우 주소 필드에 다음과 같은 http get 변수가 표시됩니다 (customerId = 1). 고객이 customerId = 2로 설정하고 다른 고객의 프로필을 볼 수 없도록해야합니다.

문제는 응용 프로그램이 이미 생산 중이며 양호한 작업 상태에 있기 때문에 변경 사항이이 변경과 관련하여 최소화되어야한다는 것입니다.

가장 좋은 방법은 무엇입니까?

어떤 suggestions/comments?

+0

[link] (http://www.hdiv.org)를보십시오. 사용자가 요청 매개 변수를 변경할 수 없도록하는 기능을 제공합니다. –

답변

3

사용자가 자신의 프로필 만 변경할 수 있도록 허용해야하는 이유는 무엇입니까? 나는 이것에 대한 필요성을 보지 못했다. 오히려 SecurityConext에서 현재 사용자를 얻고 id가없는 URL에 프로파일을 표시하십시오.

귀하가 의견에 주신 새로운 정보가 있으면 나는 sth를 제안합니다. 다음과 같이하십시오 :

URL의 지정된 주문 ID가 현재 사용자에게 속하는지 확인하십시오. "일반 웹 기반 응용 프로그램"을 사용하고 있으므로 Servlet/JSP 기반으로 가정합니다. 서블릿에서 다음과 같이하면됩니다.

int orderId = Integer.parseInt(request.getParameter("orderId")); 
String username = request.getUserPrincipal().getName(); 
/*now you need to check if username match with the username of the order e.g. by using hibernate to get the order by id and check its user and if not throw PermissionDeniedException or similiar*/ 
+0

빠른 Google 요청은 스프링에서 이렇게하도록했습니다. SecurityContextHolder.getContext(). getAuthentication(). getPrincipal(); – Korgen

+0

실수로 인해 유감스럽게 생각합니다. 스프링 기반 응용 프로그램이 아니라 UI 기반의 JQuery를 사용하는 일반적인 웹 기반 응용 프로그램입니다. – Pawan

+0

그런 다음 getUserPrincipal을 HttpServletRequest에서 사용하십시오. – Korgen

0

95 %는 Korgen의 대답에 동의합니다. 5 % - 관리자 액세스가 동일한 기능을 사용하여 사용자 프로파일을 편집 할 수있게하려면 편집 된 사용자를 식별하기 위해 UUID로 전환하십시오.

+0

또는 특정 관리 역할을 가진 사용자에게만 관리 기능을 제공하십시오. – Korgen

관련 문제