Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 依靠$\u会话的站点安全性是否安全?_Php - Fatal编程技术网

Php 依靠$\u会话的站点安全性是否安全?

Php 依靠$\u会话的站点安全性是否安全?,php,Php,我总是在$\u会话阵列上设置几个变量来控制对我的站点的访问,但我想知道这是一个安全的解决方案还是有比以下更好的解决方案: ($_SESSION['admin'] == 1) ? take_control_of_my_site : get_back; 会话数据在服务器端维护。你可以依赖这些数据,只要 你的服务器是安全的 您需要仔细验证放入会话中的任何数据 会话是安全的。即使会话变量的名称也是安全的,选择另一个名称也不会增加安全性 PHP中的问题是会话机制。默认情况下,它使用的文件会大大降低您的

我总是在$\u会话阵列上设置几个变量来控制对我的站点的访问,但我想知道这是一个安全的解决方案还是有比以下更好的解决方案:

($_SESSION['admin'] == 1) ? take_control_of_my_site : get_back;

会话数据在服务器端维护。你可以依赖这些数据,只要

  • 你的服务器是安全的
  • 您需要仔细验证放入会话中的任何数据

    • 会话是安全的。即使会话变量的名称也是安全的,选择另一个名称也不会增加安全性

      PHP中的问题是会话机制。默认情况下,它使用的文件会大大降低您的站点速度,并且伸缩性非常差,并且可能不安全,因此使用了suoshin php补丁


      从数据库后端使用会话更安全,可扩展性好,并确保会话数据安全(依赖于基于数据库的安全性)。如果黑客有你的数据库,会话是你最不担心的,因为它们可能也有你所有的密码哈希。

      会话本身并不安全。风险是存在的,但可以减轻

      意识到这些风险是很好的,这样你就可以学会如何避免它们,但是你不应该做的一件事就是因为它们而完全避免使用会话。会话是一个成熟的工具,正确使用它们是非常安全的

      事实上,编写一个不使用某种会话的有用网站是相当困难的。如果不使用内置的,那么最终将编写自己的——在大多数情况下,这确实是一个安全风险。(据我所知,有些程序员对会话的安全风险非常着迷,最终只因为不想使用会话而实现了安全性差得多的解决方案)

      值得指出的是,PHP的最新版本在安全性方面取得了巨大的进步。在旧的PHP版本中,有许多特性确实不利于安全性;PHP的最新版本已经做出了很大的努力来反对和删除这些不好的特性。您将注意到会话不在该列表中。他们不需要任何重大的安全工作。这应该告诉你所有你需要知道的


      会话默认情况下以纯文本形式存储在服务器上。这不应该是个问题,除非您的服务器可以被不需要的用户访问。如果是这种情况,那么您的安全性可能已经被破坏,因此这不是一个真正的问题,但在您可能担心的罕见情况下,可以让PHP通过函数提供会话加密。

      会话ID存储在客户端,任何有权访问会话令牌的用户都可以(例如,来自XSS攻击)有权访问它们(除非只使用HTTP cookies,即使如此,它也不是完美的)。不要说你的答案是错误的,但值得一提。@BenjaminGruenbaum请看我的(略)修改后的答案。虽然ID确实对用户可用,但数据却不可用。开发者有责任确保他依赖数据,而不是标识符。好吧,如果一个站点有登录屏幕,我总是通过HTTPS进行登录,我会根据数据库验证这些数据,所以我想我已经涵盖了这一点。真正的问题是:s可以吗OMONE以任何方式改变了$SY会话VaR?我认为这是不可能的。HTTPS不涉及XSS,一方面,考虑将cookie设置为HTTPUNIL.IKEVA.ZQuz来回答您的问题,不,用户不能更改PHP(包括<代码> $SypAs>代码>)只要你清理并保护你的输入,所有的PHP都会在进入用户浏览器之前被处理。谢谢。我会检查其他名称。这取决于$\u SESSION['admin']如果您正在使用SSL,则首先要设置。网络上有太多关于此的资源,甚至还有很多其他问题可以非常详细地回答此问题。@NathanyField变量的名称如何使其更加安全?@NathanyField这是一个非常糟糕的建议。安全性并不是来自不安全的代码读起来容易混淆。如果密码包含文件系统会话,那么它们也可以访问站点的源代码,这也为它们提供了数据库和其他一切。不一定。有一些方法可以将数据库凭据保留在源代码之外(apache ENV变量)。您还可以对源代码文件使用严格的所有权,并将会话文件和源代码分开(这通常是默认设置)。最后,使用suoshin时,会话文件不再是纯文本和加密的。但是它们的速度很慢。