HTTP - cookie

Questão motivadora:
(CESPE PF 2004 área 3) Questão 90: O IE utiliza os cookies para permitir que servidores web possam tentar identificar se um usuário já visitou previamente determinada página. Assim, ao excluir todos os cookies, o navegador elimina a
possibilidade de um servidor web identificar que o usuário já visitou previamente uma de suas páginas, na próxima vez que a página for visitada pelo usuário.
Gabarito preliminar: certa
Gabarito Definitivo: ERRADA

Justificativa da Banca:
ITEM 90 – alterado de C para E. Existem técnicas amplamente usadas que não dependem do uso de cookies para a identificação de usuários que acessam um servidor Web. Assim, a exclusão dos cookies não elimina as possibilidades de um servidor Web, que esteja executando determinado serviço, identificar visitas prévias de um usuário.


Cookie

Um cookie é um grupo de dados trocados entre o navegador e o servidor de páginas, colocado num arquivo (ficheiro) de texto criado no computador do utilizador. A sua função principal é a de manter a persistência de sessões HTTP. A utilização e implementação de cookies foi um adendo ao HTTP e muito debatida na altura em que surgiu o conceito, introduzido pela Netscape, devido às consequências de guardar informações confidenciais num computador - já que por vezes pode não ser devidamente seguro, como o uso costumeiro em terminais públicos.
Um exemplo é aquele cookie que um site cria para que você não precise digitar sua senha novamente quando for ao site outra vez. Outros sites podem utilizá-los para guardar as preferências do usuário, por exemplo, quando o sítio lhe permite escolher uma cor de fundo para suas páginas.

Funcionamento:
* Quando o servidor deseja activar um cookie no cliente, envia uma linha no cabeçalho HTTP iniciada por Set-Cookie: ...
* A partir desse momento, consoante as opções especificadas pelo cookie, o cliente irá enviar no seu cabeçalho HTTP dos pedidos uma linha contendo os cookies relevantes, iniciada por Cookie: ....
Entre os parâmetros dos cookies estão: o tempo de vida (a data para o cookie "expirar a validade") e o domínio, ou grupo de páginas a que o cookie se aplica. Por exemplo, é possível fazer com que um cookie seja aplicado apenas a endereços iniciados por http://pt.wikipedia.org/wiki/ de maneira que esse mesmo cookie já não se aplique para http://pt.wikipedia.org/skins/, por exemplo.

Se não especificada a data de validade para o cookie , ele irá expirar assim que o usuário fechar o navegador.

Em JavaScript (embutido no HTML da página acessada), podemos criar um script para manipulá-los. Utilizamos "document.cookie" (sem aspas). Exemplo:

function setCookie(name, value, expires, path, domain, secure) {
var curCookie = name + "=" + escape(value) +
((expires) ? "; expires=" + expires.toGMTString() : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
document.cookie = curCookie;
}

function getCookie(name) {
var dc = document.cookie;
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
if (begin == -1) {
begin = dc.indexOf(prefix);
if (begin != 0) return null;
} else
begin += 2;
var end = document.cookie.indexOf(";", begin);
if (end == -1)
end = dc.length;
return unescape(dc.substring(begin + prefix.length, end));
}

function deleteCookie(name, path, domain) {
if (getCookie(name)) {
document.cookie = name + "=" +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
"; expires=Thu, 01-Jan-70 00:00:01 GMT";
history.go(0);
}
}

As funções do script acima:

* setCookie - Define o valor de um cookie
* getCookie - Retorna o valor de um cookie
* deleteCookie - Exclui um cookie. Para excluir um cookie devemos alterar sua data de expiração para uma data inferior a atual. (esta função faz exatamente isso).


Em ASP, podemos utilizar cookies utilizando os objetos Response e Request. Exemplo:

* Para gravar o cookie Response.Cookies("nomedocookie")
* Para definir a validade do cookie Response.Cookies("momedocookie").Expires = DateAdd("d", 365, Now())
* Utilize o DateAdd para adicionar uma data. No exemplo acima, adicionamos 365 dias, o que equivale a um ano.
* Para definir o domínio Response.Cookies("nomedocookie").Domain = "pt.wikipedia.org"
* Para definir o grupo de páginas que o cookie se aplica Response.Cookies("nomedocookie").Path = "/wiki"
* Se definido como "/" todo o sítio poderá acessar o cookie.
* Se quiser, há como adicionar vários valores ao cookie response.Cookie("nomedocookie")("nomedovalor") = "valor"
* Para ler o cookie , utilize o objeto Request. Exemplo: variavel = Request.Cookies("nomedocookie")
* E para ler valores variavel = Request.Cookies("nomedocookie")("nomedovalor")

Comentários

Dharis disse…
HTTP é stateless. Não tem como identificar um acesso prévio por si só. Exceto se um identificador de sessão esteja na própria URL, o servidor web não pode identificar seu usuário sem cookies. IP's não são confiáveis.
Então seguindo o que é indicado na questão, isso depende. Então não há resposta certa ou errada, pois depende de diversas interpretações e fatores, mesmo que existam "técnicas [paranormais] amplamente usadas que não dependem do uso de cookies para a identificação de usuários".

Postagens mais visitadas deste blog

Redação Ti Nota 10 - Klauss

Prova Discursiva nota 10 - Banca Cespe

Portugues - Orações