2012-09-10 6 views
0

ASP.net httpcontext 캐시 개체가 특정 시나리오에서 데이터베이스를 참조하는 횟수를 줄임으로써 웹 응용 프로그램 성능을 향상시키는 데 도움이 될 수 있음을 알았습니다. 나는 성공적으로 로그인 할 때 만들어지는 사용자 객체를 httpcontext 캐시 객체에 저장하고 각 페이지/요청을 처리 할 때 DB를 참조하는 수를 줄이기 위해이 객체를 보존하기로 결정했습니다. 나는 그 객체에 암호 또는 소금 값을 유지하지 않지만 사용자 객체의 계정 만료일과 같은 것들을 유지합니다. 상대적으로 민감한 정보의 이러한 종류의 유지 (I는 솔루션을 내 시나리오 여부에 적용 할 수 있는지 여부를 확인하기 위해 아래 링크를ASP.net httpcontext 캐시 개체는 (상대적으로) 민감한 정보를 저장할 수있을 정도로 안전합니까?

Security of cached data in .NET

을 확인하지만, 나는이 시나리오에 적용 할 수있는이 이야기 추론 할 수 없습니다 캐시 개체에서).

이 캐시 개체의 사용이 계정 만료일 또는 계정 활성화 플래그와 같은 것을 보관하기에 충분한 지 여부를 알려주시겠습니까? 그렇지 않다면, 후속 DB 호출없이 사용자 객체를 가지고있는 것에 대한 귀하의 제안은 무엇입니까?

P .: 응용 프로그램 풀 재활용시 발생하는 문제 때문에 세션 개체에 해당 개체를 보관하고 싶지 않습니다.

답변

1

링크 된 게시물에서 알 수 있듯이 응용 프로그램, 서버 인프라 및 코드 작성 방법만큼이나 안전합니다. 캐시에는 응용 프로그램 전체에 적용되는 정보가 있습니다. 즉, 코드를 작성한 방식에 보안 취약점이있는 경우 사용자간에 사용자 별 정보가 노출 될 위험이 더 커집니다.

그냥 by-by-by - 당신이 응용 프로그램 풀 재활용 때문에 세션에 문제가있는 경우 캐시를 사용하는 것이 도움이되지 않습니다. 응용 프로그램 풀이 세션과 동일한 방식으로 재생되면 캐시가 지워집니다 (세션이 InProc으로 구성된 경우). 실제로, Session을 InProc으로 구성하면 값은 실제로 캐시에 저장됩니다!