caching imagem, HTTPHandler e FormsAuthentication

votos
6

O Setup:

Eu estou trabalhando em um site que usa Formsauthenticationo uso de cookies para armazenar o bilhete de login. O site também tem uma HTTPHandlerque gere imagens armazenadas no banco de dados. O manipulador armazena em cache as imagens para ser público e expiram em 20 minutos. Temos notado que desde que as imagens têm o mesmo ciclo de vida como uma página as imagens também incluem o Formsauthenticationcookie. A configuração é IIS 6, servidor Win2k, expiração de conteúdo não está habilitado.

O problema:

O que estamos enfrentando é a pessoa A registros em e bate um par de páginas. Em seguida, a pessoa B atinge a página padrão não o login e obter é o cookie para a pessoa A e é capaz de ver todos os dados de uma pessoa. Nós reproduzimos o problema de uma vez por ligar expiração de conteúdo no IIS, mas não têm reproduzido de forma consistente, então não tem certeza se a expiração de conteúdo nos ajudou a reproduzi-lo. Estamos assumindo desde as imagens estão sendo armazenados em cache como público e eles também contêm o cookie com o FormsAuthentication, é de alguma forma possível para a pessoa B para obter involuntariamente bolinho de Pessoa A. Sabemos que isso não é um ataque contra o site.

Alguém já experimentou algo semelhante a este comportamento? Se assim for, você pode fornecer qualquer aconselhamento sobre como reproduzir este problema de forma consistente?

Publicado 04/11/2008 em 22:54
fonte usuário
Em outras línguas...                            


7 respostas

votos
1

Estamos assumindo o cookie está no cabeçalho de resposta e está escrevendo o mesmo cookie que existe na máquina de Pessoa à Pessoa B. É importante notar que esta questão ocorreu com a pessoa A no IE 7 e Pessoa B no FireFox. Além disso, quando a pessoa A desconectado-lo desconectado Pessoa B foi registrado como bem desde o bilhete FormsAuthentication não era mais válido no servidor. Então, sim, eles tinham biscoitos differnet, mas o mesmo bilhete FormsAuthentication dentro de cada um dos vários daqueles cookies. Uma foi gerado no entanto sem estar conectado.

Encontramos também este artigo, mas não foram capazes de confirmar se esta é a causa. http://support.microsoft.com/default.aspx?scid=kb;EN-US;917072

Vou ver o que LiveHTTP me diz e se reportará de volta. Obrigado.

Respondeu 04/11/2008 em 23:24
fonte usuário

votos
0

Ela pode ajudar a instalar Fiddler para investigar as solicitações HTTP, conforme especificado acima. Além disso, confirme os biscoitos são os mesmos. Será que o seu manipulador, ou formas sistema de autenticação usar uma referência de objeto estático? Você pode ter uma condição de corrida em seu código. e não está travando adequadamente seus recursos.

Respondeu 19/12/2008 em 07:08
fonte usuário

votos
0

Tem certeza que você não tem algo como o cache de saída habilitado na página?

Respondeu 19/12/2008 em 00:24
fonte usuário

votos
0

Todo o tráfego foi SSL ... rever o IIS registra tudo estava atravessando a porta 443. A única cache que estava sendo ajustado foi nas imagens para público como mencionado anteriormente. Nossa hipótese é que este é em cache de saída resultado causando o problema.

Respondeu 05/11/2008 em 18:31
fonte usuário

votos
0

Desculpe eu esqueci de mencionar que todo o tráfego estava atravessando a porta 443 como SSL. Estamos pensando em remover o cookie conjunto de imagens. No entanto, estamos pouco confuso como isso poderia acontecer quando todo o tráfego é processado através de SSL.

Respondeu 04/11/2008 em 23:42
fonte usuário

votos
0

Claro, se essas imagens (e CSS e JS arquivos estáticos, etc ...) não estão sendo servidos como HTTPS, eles estarão sujeitos a caching por ISPs ou outros proxies (bem, caches na verdade), juntamente com os seus cookies.

Há uma directiva cache algo como isto:

Cache-control: no-cache="set-cookie,set-cookie2"

... que é suposto para instruir caches não para armazenar em cache os cabeçalhos de resposta "set-cookie", mas não tenho certeza de como amplamente suportado este é (apesar de ser standard).

Evite cabeçalhos de resposta Set-Cookie ao servir imagens se você pode (e não pode ser fácil se você não está no controle completo de gerenciamento de sessão). Se um usuário deve ser autenticado para ver algumas imagens, em seguida, essas imagens não devem ser armazenadas em cache publicamente qualquer maneira.

Respondeu 04/11/2008 em 23:33
fonte usuário

votos
0

Por que a pessoa B começa bolinho de Pessoa A? Estou assumindo que você quer dizer cookie de sessão da pessoa B está sendo associada de A ID de login. Esse é o cerne do problema.

Parece-me que é um ID de início de sessão está sendo armazenado em um lugar que poderia cruzar pedidos - como um arquivo temporário ou do DB - sem associá-la com um cookie de sessão. (Relacionadas questão:. Saída da página está sendo armazenada em cache, mas não devidamente associado com ou recuperados através do cookie de sessão) Quando as informações da sessão é armazenado ou armazenado em cache, ele deve ser associado com o cookie. Pense em termos de dados da sessão pertencentes a um Brower, não um login.

Gostaria de instalar a extensão LiveHTTP Firefox e examinar os cabeçalhos de solicitação / resposta. Minha aposta é, você verá A e B têm os cookies diferentes, mas no servidor eles estão ambos associados com o mesmo ID de login.

Respondeu 04/11/2008 em 23:17
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more