Javascript 在浏览器上的何处存储敏感数据?

Javascript 在浏览器上的何处存储敏感数据?,javascript,php,security,browser,penetration-testing,Javascript,Php,Security,Browser,Penetration Testing,我有一些数据,比如UserId、tokenId、sessionId,我必须传递给用于验证/身份验证/处理的每个ajax调用 我将该数据存储在全局JS对象中。 所以当用户查看页面的源代码时,这将对他们可见 根据我所在组织的渗透安全团队的说法,它的安全威胁是在查看源上显示敏感数据,如us UserId、tokenId、sessionId 如何在js/浏览器中存储在查看源代码时不可见的数据? web开发公司如何使用不同的方法来存储像userId这样的数据? 将这些数据存储在cookie或加密中会因其大

我有一些数据,比如UserId、tokenId、sessionId,我必须传递给用于验证/身份验证/处理的每个ajax调用

我将该数据存储在全局JS对象中。 所以当用户查看页面的源代码时,这将对他们可见

根据我所在组织的渗透安全团队的说法,它的安全威胁是在查看源上显示敏感数据,如us UserId、tokenId、sessionId

如何在js/浏览器中存储在查看源代码时不可见的数据? web开发公司如何使用不同的方法来存储像userId这样的数据? 将这些数据存储在cookie或加密中会因其大量使用而影响性能

tokenId是一个CRSF令牌ID,sessionId是会话ID。

我必须根据许多假设回答这个问题,但是如果您编辑您的问题并让我知道,我会更新我的答案

什么是
用户ID

如果这是用户的明文ID,则可能会对您的系统造成风险

e、 g.如果您的管理员帐户具有ID
0
,然后恶意用户将其
UserId
cookie设置为
0
-这会使恶意用户充当管理员吗

您没有说明
tokenId
sessionId
是什么,因此很难进一步评论,但为了回答这个问题,我假设
tokenId
是一个身份验证会话ID,而
sessionId
是身份验证会话ID

如果是这种情况,则
UserId
不应来自cookie值或页面上的隐藏字段-它应来自服务器端的
sessionId
,并且应来自当前用户已通过身份验证的会话

如果已设置,则在源代码中显示
tokenId
sessionId
不会有内在风险,但如果这些值在cookie中已经可用,则无需在代码中再次设置。这似乎是一种潜在的情况,因为AJAX请求将以两种方式(请求和cookie)发送值,所以请确保只使用一种方式来确保所有逻辑一致


总之,会话数据最“安全”的地方实际上是在cookie中,因为它们不会缓存在cookie机制之外(例如缓存页面的源中)。但是,通过设置和标志,确保这些Cookie仅通过HTTPS发送,并且在DOM上不可用。

将其从Cookie加载到一个变量,那么它将只加载一次,并且不会对性能造成很大影响。您可以尝试将其存储在localStorage中,但存储在浏览器中的任何内容都可以很容易地找到。通过任何方法存储在前端的数据都是不安全的。。为什么要在前端存储敏感数据?呃,这些数据必须提供给用户。你的笔友们认为这是什么攻击向量?这是不安全的。cookie和你的页面源之间的可见性几乎没有差别。你有没有考虑过编写一个DRM启用的Silverlight插件?