2009-06-12 2 views
0

설정이 표시되지 않는 SSL을 사용하여 '/ login/**'은 내 channelConfig.secure [] 목록에 있지만 그 외 모든 것은 channelConfig.insecure []에 있습니다./login에 대한 모든 요청은 https : //로 리디렉션되고 다른 모든 요청은 http : //로 리디렉션됩니다.로그인 페이지가 암호화되지 않은 페이지는 암호화 세션 쿠키 (Grails를 위해 Acegi)

내 문제는 로그인 프로세스가 "암호화 된 연결을 통해서만 보내기"로 쿠키를 설정하므로 로그인 페이지가/home으로 리디렉션 될 때 홈페이지에 쿠키가 표시되지 않고 다시 방문 페이지로 리디렉션된다는 것입니다. . 다시 로그인하려고하면 로그인 페이지가 쿠키를보고 나를 리디렉션합니다.

나는 this page about SecurityConfig을 통해 사냥을했는데 SSL을 통해 생성 된 쿠키가 암호화되지 않은 HTTP를 통해 읽도록 허용하는 옵션이 있는지 확인했지만 아무 것도 발견하지 못했습니다. 내 로그인 쿠키를 암호화되지 않은 컨트롤러에서 사용할 수 있도록 설정할 수있는 옵션이 있습니까?

답변

6

이것은 취약점입니다.

세션 쿠키를 볼 수있는 중개자는 사용자로 요청할 수 있습니다. 이것은 암호가 가로 채는 것만큼이나 나쁨입니다. 남자 - 인 - 더 - 중간 자신에 새로운 세션을 확립 할 수 없을 것입니다,하지만 그는 사용자가 한 번 사용자가 로그인 할 수있는 일을 할 수있을 것입니다.


SSL이 작업을 수행하여 로그인 할 때 단순히 사용자 이름과 암호를 숨기는 것보다 훨씬 더 많은 기능을 제공합니다.

먼저 클라이언트와 서버 간의 모든 메시지에 대한 기밀성을 제공합니다. 암호를 중요한 데이터로 쉽게 인식 할 수 있지만 민감한 데이터를 사용하는 응용 프로그램 기능도 분명하지 않을 수 있습니다. 사용자 입력 및 동적으로 생성 된 내용을 보호하는 것은 응용 프로그램에서 사용되는 각 데이터 필드의 개인 정보 문제를 신중하게 평가하는 것보다 안전하고 쉽습니다. 이미지, 도움말 페이지 등과 같은 정적 콘텐츠는 민감하지 않을 수 있지만 해당 콘텐츠에 대한 요청을 분석하여 공격자는 사용자가 사이트에서 수행하는 작업을 파악할 수 있습니다.

둘째, SSL은 모든 요청에 ​​대해 무결성을 제공합니다. 이것은 공격자가 자신의 사악한 입력을 수정하거나 사용자 요청에 추가하거나 서버에서 생성 된 결과를 수정하는 것을 방지합니다.

+0

로그인 페이지를 암호화 된 페이지로만 만들면 전혀 암호화하지 않는 것만큼이나 나쁜 것입니까? 일반 텍스트로 암호를 보내지 만 모든 페이지를 암호화하지 않아도되는 방법이 있습니까? 그렇지 않다면, 나는 나의 접근 방식을 바꿔야 할 것이다. –

+0

거의. 암호를 공개하지 않기 때문에 다른 사이트에서 동일한 암호를 사용하지만 사이트가 완전히 취약한 경우 사용자에게 문제가 생길 수 있습니다. 나는 나의 대답을 좀 더 많은 정보로 업데이트했다. – erickson

+0

포괄적 인 답변에 감사드립니다. 암호화되지 않은 연결을 사용하는 주된 이유는 성능 이었지만 HTTP와 HTTPS 성능에 대한 다른 질문 (http://stackoverflow.com/questions/149274/http-vs-https-performance)을 읽은 후에는 주요 콘텐츠는 거의 모든 콘텐츠가 동적이기 때문에 속도가 빨라집니다. –