보안을 강화하기 위해 "컨텍스트 개체" 디자인 패턴을 어떻게 사용합니까?

StackOverflow https://stackoverflow.com/questions/3260323

문제

저는 계층 간에 전달되는 개체를 둘러싸는 경량 컨텍스트 래퍼인 컨텍스트 개체 디자인 패턴의 사용에 익숙합니다.

오염(신뢰할 수 없는 사용자 입력) 또는 원본 계층을 추적하기 위해 컨텍스트 개체를 사용하는 경우 수신 계층이 이에 따라 어떻게 동적으로 필터링, 인코딩 또는 유효성을 검사할 수 있는지 확인할 수 있습니다.

예를 들어:사용자는 결국 시스템에 파일로 저장될 "HTTP/HTML" 컨텍스트 데이터를 보냅니다.파일 저장 방법은 컨텍스트를 감지하고 HTML 엔터티를 디코딩하고, 파일 업로드에 임의의 식별자를 할당하고, 사용자 작업과 데이터베이스의 파일 이름을 연결할 수 있습니다.

내 질문은 다음과 같습니다기본적으로 모든 필터링, 인코딩 및 유효성 검사를 적용하는 것보다 이것이 어떻게 더 똑똑합니까?원본 컨텍스트를 아는 것이 단지 좋은 입력 유효성 검사/인코딩 이상의 보안을 향상시키는 경우는 무엇입니까?

저는 Java/J2EE/Struts에서 작업하고 있지만 이는 다른 언어 및 프레임워크에 일반화할 수 있습니다.

참고자료:

http://www.corej2eepatterns.com/Patterns2ndEd/ContextObject.htm

http://www.cs.wustl.edu/~schmidt/PDF/Context-Object-Pattern.pdf

http://www.owasp.org/index.php/Category:OWASP_Security_Analytic_of_Core_J2EE_Design_Patterns_Project

감사의 마음을 담아,

-벤

도움이 되었습니까?

해결책

애플리케이션 계층 간의 오염 추적이 컨텍스트 개체 패턴의 가장 좋은 애플리케이션인지는 모르겠습니다.내가 이해하는 바에 따르면 컨텍스트 개체는 단일 계층 내에 머무르며 해당 계층을 통과하는 여러 메시지에 서비스를 제공하는 개체입니다.

이것이 보안 메커니즘으로 사용되는 것을 볼 수 있는 곳은 애플리케이션 내에 명시적인 보안 계층을 생성하는 것입니다.각 사용자가 시스템에 인증할 때 보안 컨텍스트 개체가 해당 사용자의 보안 계층 ​​내에 생성된다고 상상해 보세요.보안 컨텍스트 개체에는 해당 사용자의 모든 권한 목록이 포함되어 있습니다.사용자가 시스템에 입력하는 모든 요청은 먼저 보안 계층을 통과하고 사용자의 보안 컨텍스트 개체에 대해 평가되어야 합니다.

요청이 허용되면 보안 계층은 처리를 위해 이를 스택의 상위 계층으로 전달합니다.요청이 거부되면 보안 계층은 사용자에게 오류를 반환하고 애플리케이션의 나머지 부분은 전혀 현명하지 않습니다.보안 문제를 보안 계층 ​​내에서 중앙 집중화하면 비즈니스 및 서비스 계층 전반에 걸쳐 보안 검사가 분산되는 것을 방지할 수 있습니다.

이 경우 보안 컨텍스트 개체는 컨텍스트 개체 패턴을 구현합니다.컨텍스트 개체는 수명이 길고 여러 사용자 요청에 컨텍스트를 제공하지만 요청 스택의 상위 또는 하위 계층에는 표시되지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top