Session 在会话中存储数据有哪些风险?

Session 在会话中存储数据有哪些风险?,session,drupal,Session,Drupal,我听说过跨站点脚本,人们可以通过各种方式访问cookie。所以我希望有人能回答这些问题。我想举一个例子,以最纯粹的方式在会话中存储一些东西,但是使用像Drupal这样的CMS。假设我们有: $data = $fancyWebService->getSuperSecureDataThatOnlyTheCurrentlyLoggedInUserCanSee(); $_SESSION['basic_variable'] = $data; 如果用户现在从mysite.com旅行到devious-

我听说过跨站点脚本,人们可以通过各种方式访问cookie。所以我希望有人能回答这些问题。我想举一个例子,以最纯粹的方式在会话中存储一些东西,但是使用像Drupal这样的CMS。假设我们有:

$data = $fancyWebService->getSuperSecureDataThatOnlyTheCurrentlyLoggedInUserCanSee();
$_SESSION['basic_variable'] = $data;
  • 如果用户现在从mysite.com旅行到devious-site.com,是否有任何方法可以让某人仅仅知道变量被称为“基本变量”,就从“基本变量”获取数据
  • 是否有任何方法可以让当前用户看到$\u服务器变量的打印输出,并实际看到其中存储的所有内容
  • 我在某个地方读到,会话或cookie中的数据应该“加密”。在上面的示例中,我相当确定数据存储在会话中,并且该会话是安全的。是这种情况,还是只有启用HTTPS时才安全
  • Drupal在Cookie中存储一些信息,如果您选择将Cookie用作“会话”,这会对上述内容产生什么影响
  • 更新

    关于问题2。我的意思是,如果我在php文件中键入以下内容:

    print '<pre>';
    print_r($_SESSION);
    die();
    
    打印“”;
    打印(美元会话);
    模具();
    
    (或者只是vardump会话变量)


    我最终得到了我储存在那里的所有信息,未加密。我的问题是,是否有任何方法可以让用户以某种方式找到访问会话变量的方法(而不是通过我公开它),这会使不加密值成为一个坏主意

    cookie只能由cookie来源的存储域访问。劫持取决于网络。

    会话id存储在客户端cookie中,其他域无法访问其他域的cookie,并且相同的两台服务器(两个网站)无法看到彼此的会话(直到您将会话id存储在共享服务器中)

    1:使用一般方法是不可能的,但有一种方法-要使您的会话在各种网站上可用,您必须将会话存储在公共服务器上,并且必须根据GET/POST vars传输会话ID。 编写自己的会话保存处理程序并将会话存储在数据库中。可以从多个web服务器访问数据库,您就完成了

    2:问题不清楚

    3:是的,https可以保护您免受会话劫持

    4:问题有点不清楚,请按照此url获取会话和cookie之间的差异/相关性


    用户格罗姆在这里给出了一个很好的答案,其中提到了帮助保护PHP会话安全的方法:

    首先,我想说PHP,特别是5.x.x版本,在安全性方面已经取得了长足的进步;但是,由于会话数据在服务器和客户机之间不断传递,因此仍有许多潜在的问题可能会发生在会话数据上。让我们分别讨论你的4点:

    “如果用户现在从mysite.com旅行到devious-site.com 任何人都可以从“基本变量”中获取数据, 只要知道变量名为“that”

    当然不是。变量和变量名存储在服务器上,因为代码在发送到客户端之前会被处理成HTML视图,所以PHP代码永远不会到达客户端。存储在变量中的数据在服务器上是安全的,如果有人不能访问您的服务器,或者以某种方式损害了服务器的安全性,那么这些变量中存储的数据在服务器上是安全的。如果给定变量中的数据存储在通过有线/网络传输到客户端的会话或cookie中,则它有可能被截获。默认情况下,此通信量是未加密的,除非您通过SSL证书或类似的加密方案实现了OpenSSH

    '当前用户是否有任何方式可以看到 $\u服务器变量并实际查看其中存储的所有内容?“

    如果您“回显”它,或者对PHP编程以公开其中存储的数据。同样,如果变量被放在发送到客户端的某个地方,并且在发送HTTP响应之前没有被处理成HTML或以其他方式处理,那么它就有风险

    “我在某个地方读到,会话或cookie中的数据应该是 “加密”。在上面的例子中,我相当确定数据是正确的 存储在会话中,并且此会话是安全的。是这个吗 案例,还是仅在启用HTTPS时才安全?“

    是的,必须启用HTTPS,并且必须具有SSL证书才能加密数据,否则未加密的HTTP请求/响应中的所有内容都会受到嗅探、跨站点脚本攻击、域伪造、重定向攻击等攻击。SSL绝对有助于防止这种情况的发生

    '如果您选择将Cookie用作Cookie,Drupal会在Cookie中存储一些信息 关于“会议”,这对上述内容有何影响

    Cookie存储在用户的机器上。Cookie中的数据可以由服务器加密或散列,以便安全地存储在客户端,但任何事情都是可能的。如果一个潜在的黑客伪造了你的域名,他们可以访问cookies和其中的所有内容。如果cookie链接到活动会话,则表示他们刚刚伪造了自己的身份,并通过受害者的会话访问了您的站点。噗。身份盗用、恶意编辑用户内容等。Drupal肯定已经存在了足够长的时间,有机制来帮助防止这种情况;然而,我不是Drupal专家

    希望这能给我们一些启示。最佳实践IMO,不要在会话中存储敏感数据!如果要在cookie中存储标识信息,请确保有某种类型的实现来防止跨站点伪造,例如,在ASP.NET MVC中,我使用框架中提供的防伪令牌。您需要一种方法来确保通过cookie声称自己是谁的人有另一种方法来验证来自您的站点/域的cookie请求,而不是ano