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