Reino: Encapsulation
Encapsulamento consiste em traçar limites fortes. Em um navegador web, isso pode significar que seu código para dispositivos móveis não pode ser abusado por outros códigos para dispositivos móveis. No servidor, pode significar a diferenciação entre dados validados e não validados, entre os dados de dois usuários ou entre os dados que os usuários podem ou não acessar.
Cross-Session Contamination
Abstract
Transferir valores entre
localStorage
e sessionStorage
pode expor informações confidenciais involuntariamente.Explanation
O HTML5 fornece mapas
Por exemplo, um desenvolvedor pode desejar utilizar várias guias ou instâncias do navegador em um aplicativo de viagem que quer permitir a um usuário abrir várias guias para comparar acomodações enquanto mantém os critérios de pesquisa originais do usuário. Na situação tradicional de armazenamento HTTP, o usuário arrisca compras e decisões deitas em uma guia (e armazenadas na sessão ou nos cookies), interferindo com as compras em uma outra guia.
Com a capacidade de utilizar os valores do usuário em várias guias do navegador, os desenvolvedores devem ter cuidado para não mover informações confidenciais do escopo de
Exemplo 1: O exemplo a seguir armazena as informações CCV de cartão de crédito na sessão para indicar que um usuário já autorizou o site a cobrar do cartão armazenado em arquivo por uma compra. Para cada tentativa de compra no contexto da guia do navegador, a aprovação do cartão de crédito é exigida. Para evitar que a CCV seja inserida novamente, as informações são armazenadas no objeto
Ao colocar as informações de volta no objeto
localStorage
e sessionStorage
para permitir aos desenvolvedores manterem os valores do programa. O mapa sessionStorage
fornece armazenamento à página de chamada e permanece apenas pela duração da instância de página e da sessão imediata do navegador. O mapa localStorage
, no entanto, fornece um armazenamento acessível por meio de várias instâncias de página e várias instâncias de navegador. Essa funcionalidade permite a um aplicativo persistir e utilizar a mesma informação em várias guias ou janelas do navegador.Por exemplo, um desenvolvedor pode desejar utilizar várias guias ou instâncias do navegador em um aplicativo de viagem que quer permitir a um usuário abrir várias guias para comparar acomodações enquanto mantém os critérios de pesquisa originais do usuário. Na situação tradicional de armazenamento HTTP, o usuário arrisca compras e decisões deitas em uma guia (e armazenadas na sessão ou nos cookies), interferindo com as compras em uma outra guia.
Com a capacidade de utilizar os valores do usuário em várias guias do navegador, os desenvolvedores devem ter cuidado para não mover informações confidenciais do escopo de
sessionStorage
para o localStorage
ou vice-versa.Exemplo 1: O exemplo a seguir armazena as informações CCV de cartão de crédito na sessão para indicar que um usuário já autorizou o site a cobrar do cartão armazenado em arquivo por uma compra. Para cada tentativa de compra no contexto da guia do navegador, a aprovação do cartão de crédito é exigida. Para evitar que a CCV seja inserida novamente, as informações são armazenadas no objeto
sessionStorage
. No entanto, o desenvolvedor também armazena as informações no objeto localStorage
.
...
try {
sessionStorage.setItem("userCCV", currentCCV);
} catch (e) {
if (e == QUOTA_EXCEEDED_ERR) {
alert('Quota exceeded.');
}
}
...
...
var retrieveObject = sessionStorage.getItem("userCCV");
try {
localStorage.setItem("userCCV",retrieveObject);
} catch (e) {
if (e == QUOTA_EXCEEDED_ERR) {
alert('Quota exceeded.');
}
...
var userCCV = localStorage.getItem("userCCV");
...
}
...
Ao colocar as informações de volta no objeto
localStorage
, as informações CCV estarão agora disponível em outras guias do navegador e também em novas invocações do browser. Isso ignorará a lógica do aplicativo para o fluxo de trabalho pretendido.References
[1] Standards Mapping - Common Weakness Enumeration CWE ID 501
[2] Standards Mapping - DISA Control Correlation Identifier Version 2 CCI-001090, CCI-002361
[3] Standards Mapping - FIPS200 SI
[4] Standards Mapping - General Data Protection Regulation (GDPR) Indirect Access to Sensitive Data
[5] Standards Mapping - NIST Special Publication 800-53 Revision 4 AC-12 Session Termination (P2), SC-4 Information in Shared Resources (P1)
[6] Standards Mapping - NIST Special Publication 800-53 Revision 5 AC-12 Session Termination, SC-4 Information in Shared System Resources
[7] Standards Mapping - OWASP Application Security Verification Standard 4.0 8.2.3 Client-side Data Protection (L1 L2 L3)
[8] Standards Mapping - OWASP Mobile 2014 M4 Unintended Data Leakage
[9] Standards Mapping - OWASP Mobile 2024 M9 Insecure Data Storage
[10] Standards Mapping - OWASP Mobile Application Security Verification Standard 2.0 MASVS-STORAGE-2
[11] Standards Mapping - OWASP Top 10 2004 A1 Unvalidated Input
[12] Standards Mapping - OWASP Top 10 2021 A04 Insecure Design
[13] Standards Mapping - Payment Card Industry Data Security Standard Version 1.1 Requirement 6.5.1
[14] Standards Mapping - Payment Card Industry Data Security Standard Version 1.2 Requirement 6.3.1.1
[15] Standards Mapping - Payment Card Industry Data Security Standard Version 2.0 Requirement 6.5.8
[16] Standards Mapping - Payment Card Industry Data Security Standard Version 3.0 Requirement 6.5.8
[17] Standards Mapping - Payment Card Industry Data Security Standard Version 3.1 Requirement 6.5.8
[18] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2 Requirement 6.5.8
[19] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2.1 Requirement 6.5.8
[20] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0 Requirement 6.2.4
[21] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0.1 Requirement 6.2.4
[22] Standards Mapping - Payment Card Industry Software Security Framework 1.0 Control Objective 5.4 - Authentication and Access Control
[23] Standards Mapping - Payment Card Industry Software Security Framework 1.1 Control Objective 5.4 - Authentication and Access Control
[24] Standards Mapping - Payment Card Industry Software Security Framework 1.2 Control Objective 5.4 - Authentication and Access Control, Control Objective C.2.3 - Web Software Access Controls
[25] Standards Mapping - Security Technical Implementation Guide Version 3.1 APP3510 CAT I
[26] Standards Mapping - Security Technical Implementation Guide Version 3.4 APP3510 CAT I
[27] Standards Mapping - Security Technical Implementation Guide Version 3.5 APP3510 CAT I
[28] Standards Mapping - Security Technical Implementation Guide Version 3.6 APP3510 CAT I
[29] Standards Mapping - Security Technical Implementation Guide Version 3.7 APP3510 CAT I
[30] Standards Mapping - Security Technical Implementation Guide Version 3.9 APP3510 CAT I
[31] Standards Mapping - Security Technical Implementation Guide Version 3.10 APP3510 CAT I
[32] Standards Mapping - Security Technical Implementation Guide Version 4.2 APSC-DV-000060 CAT II, APSC-DV-002380 CAT II
[33] Standards Mapping - Security Technical Implementation Guide Version 4.3 APSC-DV-000060 CAT II, APSC-DV-002380 CAT II
[34] Standards Mapping - Security Technical Implementation Guide Version 4.4 APSC-DV-000060 CAT II, APSC-DV-002380 CAT II
[35] Standards Mapping - Security Technical Implementation Guide Version 4.5 APSC-DV-000060 CAT II, APSC-DV-002380 CAT II
[36] Standards Mapping - Security Technical Implementation Guide Version 4.6 APSC-DV-000060 CAT II, APSC-DV-002380 CAT II
[37] Standards Mapping - Security Technical Implementation Guide Version 4.7 APSC-DV-000060 CAT II, APSC-DV-002380 CAT II
[38] Standards Mapping - Security Technical Implementation Guide Version 4.8 APSC-DV-000060 CAT II, APSC-DV-002380 CAT II
[39] Standards Mapping - Security Technical Implementation Guide Version 4.9 APSC-DV-000060 CAT II, APSC-DV-002380 CAT II
[40] Standards Mapping - Security Technical Implementation Guide Version 4.10 APSC-DV-000060 CAT II, APSC-DV-002380 CAT II
[41] Standards Mapping - Security Technical Implementation Guide Version 4.11 APSC-DV-000060 CAT II, APSC-DV-002380 CAT II
[42] Standards Mapping - Security Technical Implementation Guide Version 4.1 APSC-DV-000060 CAT II, APSC-DV-002380 CAT II
[43] Standards Mapping - Security Technical Implementation Guide Version 5.1 APSC-DV-000060 CAT II, APSC-DV-002380 CAT II
[44] Standards Mapping - Security Technical Implementation Guide Version 5.2 APSC-DV-000060 CAT II, APSC-DV-002380 CAT II
[45] Standards Mapping - Security Technical Implementation Guide Version 5.3 APSC-DV-000060 CAT II, APSC-DV-002380 CAT II
[46] Standards Mapping - Security Technical Implementation Guide Version 6.1 APSC-DV-000060 CAT II, APSC-DV-002380 CAT II
[47] Standards Mapping - Web Application Security Consortium Version 2.00 Information Leakage (WASC-13)
[48] Standards Mapping - Web Application Security Consortium 24 + 2 Information Leakage
desc.dataflow.javascript.cross_session_contamination