【问题标题】:$_SESSION['nonce'] - where did it come from?$_SESSION['nonce'] - 它是从哪里来的?
【发布时间】:2018-04-01 19:37:25
【问题描述】:

在设置自己的会话变量时,我突然发现 (var_dump($_SESSION)) 我的 $_SESSION 数组中有一个名为 nonce 的变量。我没有设置它(故意)。关于将变量 nonce 设置到我的 $_SESSION 数组中的任何想法?

可能是依赖项还是会话配置设置?

我设置了booktitle,而不是nonce。这是var_dump 结果的一部分:

array(6) {
  ["nonce"]=>
  string(128) "5914056215a1efb5369e7b2fd14739c666d5dd1c17bd0312c5b5d196afdf0400ee78aac4e70d16bc6f23bc216086a45a1315ce21fbb8ad8ad85b4432a661ba0e"
  ["booktitle"]=>
  string(5) "jimmy"

会话配置代码:

$this->session = [
            'cookie_httponly' => true, // XSS
            'strict_mode' => true, // session fixation
            'use_cookies' => true,
            'use_only_cookies' => true,
            'cookie_secure' => $secure, // HTTPS only
            'cookie_domain' => '/',
            'cookie_lifetime' => 0, // untill browser closed
            'use_trans_sid' => false
        ];

然后在每个页面上:session_start(); 并设置变量:

$_SESSION['booktitle'] = 'jimmy';

PHP/框架/操作系统:

PHP 7.1.3 没有框架,只有1个依赖Flintstone(键值平面文件数据库) 操作系统 Windows 10(v 1709)。

phpinfo():会话:

Session Support     enabled
Registered save handlers    files user
Registered serializer handlers  php_serialize php php_binary wddx
Directive   Local Value Master Value
session.auto_start  Off Off
session.cache_expire    180 180
session.cache_limiter   nocache nocache
session.cookie_domain   no value    no value
session.cookie_httponly Off Off
session.cookie_lifetime 0   0
session.cookie_path /   /
session.cookie_secure   Off Off
session.gc_divisor  1000    1000
session.gc_maxlifetime  1440    1440
session.gc_probability  1   1
session.lazy_write  On  On
session.name    PHPSESSID   PHPSESSID
session.referer_check   no value    no value
session.save_handler    files   files
session.save_path   no value    no value
session.serialize_handler   php php
session.sid_bits_per_character  5   5
session.sid_length  26  26
session.upload_progress.cleanup On  On
session.upload_progress.enabled On  On
session.upload_progress.freq    1%  1%
session.upload_progress.min_freq    1   1
session.upload_progress.name    PHP_SESSION_UPLOAD_PROGRESS PHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefix  upload_progress_    upload_progress_
session.use_cookies On  On
session.use_only_cookies    On  On
session.use_strict_mode Off Off
session.use_trans_sid   0   0

【问题讨论】:

  • 不知道;发布您的代码。
  • 您使用的是哪个框架和版本的 php 以及在什么操作系统上? phpinfo() 在会话/cookie 方面显示什么?
  • 也许我应该问问鸭子……
  • 嘿, 是的,也许你应该 ;-) 不过要小心,他似乎是个庸医!
  • 您需要在您的项目中搜索“nonce”,因为它可能以不同于$_SESSION['nonce'] = 的方式设置。还要检查您的 HTML 表单(例如登录表单很可能是罪魁祸首),以及您设置 cookie 的位置。

标签: php session


【解决方案1】:

您需要在整个项目代码库中搜索“$_SESSION['nonce']”以查看正在写入(或读取)该值的内容。这在几乎所有 IDE 中都很容易做到。

如果没有找到,那么它可能是您通常用于数据提交表单 (<form>) 或通信接口的某种插件。

某处正在写东西:

$_SESSION['nonce'] = blahblah;

但我们无法告诉您这是在哪里发生的,因为它特定于您的代码,而不是“一般”特征。

更新:

搜索了项目,但没有命中。至少我可以排除任何“一般”(例如 ini 设置)作为罪魁祸首 - 无论如何谢谢

然后您需要了解可以通过 php.ini 添加到所有文件中的插件和服务器端脚本,例如 auto_prepend_fileoutlined in this question

【讨论】:

  • 搜索了项目但没有命中。至少我可以排除任何“一般”(例如 ini 设置)作为罪魁祸首 - 无论如何谢谢
  • @jibsteroos 请阅读我更新的答案。如果不是这样;那么如果不亲自探索您的服务器,我不知道还有什么可能。
猜你喜欢
  • 2021-02-25
  • 2012-10-20
  • 1970-01-01
  • 2011-11-11
  • 1970-01-01
  • 2018-02-26
  • 2014-02-28
  • 2016-07-23
  • 2019-02-07
相关资源
最近更新 更多