Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

Sorry, you do not have permission to ask a question, You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please type your username.

Please type your E-Mail.

Please choose an appropriate title for the post.

Please choose the appropriate section so your post can be easily searched.

Please choose suitable Keywords Ex: post, video.

Browse

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise Logo Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise Logo

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise Navigation

  • Home
  • About Us
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • About Us
  • Contact Us
Home/ Questions/Q 8456

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise Latest Questions

Author
  • 60k
Author
Asked: November 28, 20242024-11-28T01:16:07+00:00 2024-11-28T01:16:07+00:00

Autenticação Cookies HTTP, HTTP Only, JWT, LocalStorage e SessionStorage.

  • 60k

1 – Um cookie de navegador representa uma informação de texto enviada pelo servidor de uma aplicação web e salva no navegador. Desta forma, um servidor pode, ao receber credenciais do usuário, gerar um ID “Token de acesso” único e enviar através de cookies.

2 – Cookies são amplamente utilizados para armazenar informações em navegadores, podem conter dados sensíveis como sua informação de sessão, por isso devemos nos preocupar com seu armazenamento.

3 – Cada navegador armazena seus cookies de forma diferente, seja em um banco de dados embutido, ou em arquivos de texto encriptados pelo sistema operacional.

4 – Para visualizar os cookies de uma aplicação que estamos acessando, podemos usar as ferramentas de desenvolvedor, utilizando a tecla F12 ou clicando em “inspect”, selecione a aba “Aplicativo” ou “Application” e no menu lateral, terá a parte de Cookies. São separados por domínio, onde sua aplicação hospeda no domínio X e envia um cookie de identificação de sessão. No código da aplicação há chamadas para um servidor que configura relatórios de acesso ao site.

5 – Os cookies possuem alguns parâmetros, aqui estão alguns deles:

Expires: Define a data e a hora de expiração do cookie. Se esse parâmetro não for definido, será configurado por default como um cookie de sessão, expirando quando o navegador for fechado.

Max-Age: Similar ao Expires, ele também define quando um cookie vai expirar, mas em segundos.

Domain: Define para qual host o cookie será enviado pelo navegador. Se esse parâmetro não for definido, o cookie será enviado somente para o host da URL atual, será enviado nas requisições para example.com e todos os seus sub-domínios.

Path: Indica qual o caminho deve existir na URL para que o cookie seja enviado pelo navegador. Se o valor for /docs, o cookie será enviado para URLs como /docs, /docs/, /docs/web, mas não será enviado para URLs como /, /documentos, /pt-br/docs.

Secure: Se esse parâmetro for definido, o cookie só será enviado em requisições HTTPS.

HttpOnly: Proíbe o acesso ao cookie em questão através do JavaScript com document.cookie. Eles são enviados só para o servidor, ex: cookies que persistem sessões de servidor não precisam estar disponíveis para o JavaScript, e portanto a diretiva HttpOnly deve ser configurada.

SameSite: Com os possíveis valores sendo Strict, Lax e None, controla se o cookie pode ser enviado em requisições feitas a partir de outros sites para o domínio do cookie.

Strict: Apenas cookies para o endereço da URL que está sendo acessada são enviados. Faz com que a requisição inicial para uma aplicação não contenha os cookies com este parâmetro, já que estão vindo de outro domínio.

Lax (opção padrão): Semelhante ao Strict, mas permite o envio dos cookies na requisição inicial. Isso permite que, por exemplo, o usuário mantenha a sessão ativa ao chegar no sistema através de um link externo.

None: Significa que os cookies serão enviados mesmo se a requisição estiver vindo de outro endereço. Para usar este método, as versões mais recentes dos navegadores exigem que o parâmetro secure seja definido.

JWT: Estratégia de autenticação para APIs em REST simples e segura. Trata-se de um padrão aberto para autenticações web, e é totalmente baseada em requisições JSON entre o cliente e o servidor. O cliente faz uma solicitação uma única vez ao enviar as credenciais de login e senha. O servidor valida as credenciais e, se tudo estiver certo, ele retorna para o cliente um JSON com um token que codifica dados de um usuário logado no sistema, e após receber o token, o cliente pode armazená-lo da forma que preferir, seja por LocalStorage, SessionStorage, Cookies e HttpOnly.

LocalStorage: Usam o localStorage para armazenar variáveis temporárias. As alterações só estão disponíveis por janela (ou em navegadores como o Chrome e o Firefox). As alterações feitas são salvas e disponibilizadas para a página atual, bem como futuras visitas ao site na mesma janela, depois que a janela é fechada, o armazenamento é excluído. Os dados estão disponíveis somente dentro da janela / guia na qual foram definidos, e os dados não persistentes serão perdidos quando a janela / guia for fechada. Como o localStorage funciona na política de mesma origem, portanto os dados armazenados só estarão disponíveis na mesma origem.

SessionStorage: É similar ao localStorage, a única diferença é que enquanto os dados armazenados no localStorage não expiram, os dados na sessionStorage têm seus dados limpos ao expirar a sessão da página. A sessão da página dura enquanto o navegador está aberto e se mantém no recarregamento da página. Funciona na política de mesma origem, portanto os dados armazenados só estarão disponíveis na mesma origem. Por fim, os dados não serão enviados de volta ao servidor para cada solicitação HTTP (HTML, imagens, JavaScript, CSS, etc.), reduzindo a quantidade de tráfego entre o cliente e o servidor.

6 – Quais são as vulnerabilidades dos métodos LocalStorage e SessionStorage?

Ambos os métodos têm problemas com segurança relacionados:

Armazenamento local XSS – script entre sites
Cookies CSRF – Falsificação de solicitação entre sites
Vulnerabilidade XSS permitindo que um invasor injete um JavaScript em uma aplicação.
Vulnerabilidade CSRF permitindo que um invasor execute ações em um site por meio de um usuário autenticado.
Como contornar esta situação?

Se o armazenamento local pode ser explorado por scripts de terceiros (como aqueles encontrados nas extensões de navegadores) e se a autenticação pode ser falsificada com cookies, onde é aceitável colocar o estado do cliente?

Criptografia de Dados: Criptografe os dados sensíveis antes de armazená-los no localStorage ou sessionStorage e descriptografe-os apenas quando necessário. Você pode usar bibliotecas de criptografia confiáveis para fazer isso.

Validação de Entrada: Sempre valide e sanitize (limpe) os dados antes de armazená-los. Isso ajuda a evitar a injeção de código malicioso ou dados corrompidos.

Lógica de Expiração: Implemente uma lógica de expiração para os dados armazenados, especialmente no localStorage. Defina prazos de validade para os dados e remova-os automaticamente quando expirarem.

Mínimo Necessário: Armazene apenas as informações estritamente necessárias. Não armazene dados sensíveis ou confidenciais no localStorage ou sessionStorage, a menos que seja absolutamente necessário.

Utilize Cookies Seguros: Se você precisa de funcionalidades de autenticação, considere o uso de cookies seguros (HTTPS) e HttpOnly. Isso ajuda a proteger os cookies contra acesso não autorizado por meio de scripts do lado do cliente.

Implemente um Modelo de Ameaça: Considere todas as possíveis ameaças à segurança ao projetar seu sistema e aplique medidas de segurança apropriadas. Isso pode incluir a restrição de acesso a certos dados, dependendo do contexto e do usuário.

Gerenciamento de Tokens: Se estiver usando tokens de autenticação, como tokens JWT (JSON Web Tokens), siga as melhores práticas de segurança para gerenciá-los. Isso inclui proteger os segredos do servidor e definir expirações apropriadas para os tokens.

Controle de Acesso: Implemente controle de acesso adequado em seu aplicativo para garantir que apenas usuários autorizados tenham acesso aos dados armazenados no localStorage ou sessionStorage.

Monitoramento e Auditoria: Implemente registros e auditoria para rastrear quem acessa e modifica os dados armazenados. Isso pode ajudar na detecção de atividades suspeitas.

Considerar Alternativas: Em alguns casos, pode ser mais seguro armazenar dados sensíveis no lado do servidor e apenas manter referências ou tokens no lado do cliente, reduzindo assim a exposição de informações confidenciais.

developmentjavascriptwebdev
  • 0 0 Answers
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

Sidebar

Ask A Question

Stats

  • Questions 4k
  • Answers 0
  • Best Answers 0
  • Users 1k
  • Popular
  • Answers
  • Author

    How to ensure that all the routes on my Symfony ...

    • 0 Answers
  • Author

    Insights into Forms in Flask

    • 0 Answers
  • Author

    Kick Start Your Next Project With Holo Theme

    • 0 Answers

Top Members

Samantha Carter

Samantha Carter

  • 0 Questions
  • 20 Points
Begginer
Ella Lewis

Ella Lewis

  • 0 Questions
  • 20 Points
Begginer
Isaac Anderson

Isaac Anderson

  • 0 Questions
  • 20 Points
Begginer

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help

Footer

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise

Querify Question Shop: Explore, ask, and connect. Join our vibrant Q&A community today!

About Us

  • About Us
  • Contact Us
  • All Users

Legal Stuff

  • Terms of Use
  • Privacy Policy
  • Cookie Policy

Help

  • Knowledge Base
  • Support

Follow

© 2022 Querify Question. All Rights Reserved

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.