【问题标题】:JWE and PHPseclib without composer没有作曲家的 JWE 和 PHPseclib
【发布时间】:2018-10-04 05:37:01
【问题描述】:

我需要在我的代码中使用 jwe。我发现了几个 jwe 库(herehere),它们也需要安装 phpseclib。但是,我们不允许在我们的工作领域安装 composer。

如何在没有 composer 的情况下引用 jwe 和 phpseclib 库?谢谢。

【问题讨论】:

  • 下载文件,将它们全部放在某个特定文件夹中(类似于 vendor,就像 Composer 通常做的那样)并创建您自己的 PSR-4-autoloader(您可以使用 PHP-FIG's example)。您将获得与 Composer 相同的功能,但无需实际使用它。我不得不问,为什么不允许你安装作曲家?这看起来……很傻。
  • Composer 可能会在后台加载其他文件的安全问题。我和 git 上的大多数代码都在使用 Composer 一样无助。
  • 这太疯狂了!我对你有感觉。制定该规则的不可能是真正的开发人员。 :-p。 (因为 Composer 对它的作用非常透明)好吧,如果你愿意,你可以用你自己的 PSR-4 加载器来模仿这个功能。不过,您仍然需要手动下载所有包和依赖项,因此您仍然需要做很多工作。
  • 我也同情你!我们如何认为 Composer 会产生安全问题?很容易知道已经下载和安装了什么,它提供了与安全主题相关的强大功能(显示未维护/过时的 deps、语义版本控制等)。顺便请注意,我将在今年年底放弃 spomky-labs/jose。请改用github.com/web-token(不再需要phpseclib)。
  • @FlorentMorselli - 我不认为 phpseclib 是每个人说的问题。据我了解,问题在于其 composer.json 的 require 部分中的任何 PHP 库,尽管github.com/web-token 将 phpseclib 作为依赖项删除,但它添加了其他几个依赖项。

标签: php jwt phpseclib autoloader jwe


【解决方案1】:

您可以使用 Composer 的自动加载器,而无需使用完整的 Composer。例如。

<?php
include 'autoload.php';

$loader = new \Composer\Autoload\ClassLoader();
$loader->addPsr4('phpseclib\\', __DIR__ . '/path/to/phpseclib2.0');
$loader->register();

// insert your code here

autoload.php 在哪里:

https://raw.githubusercontent.com/composer/composer/master/src/Composer/Autoload/ClassLoader.php

因此,此时不必对整个 Composer 进行代码审查,您只需对一个文件进行代码审查即可。

您也可以使用 PHP-FIG 的自动加载器:

https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader-examples.md

<?php
include('autoloader.php');

$loader = new \Example\Psr4AutoloaderClass;
$loader->register();
$loader->addNamespace('phpseclib',  __DIR__.'/phpseclib');

也就是说,我确实认为你们公司的政策很愚蠢。如果您不信任 Composer,为什么还要信任任何第三方 PHP 库?所以它今天给你带来了 phpseclib 的问题。您将来可能还想使用哪些其他库,但此政策也会给您带来问题?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-24
    • 2012-11-11
    • 2020-06-13
    • 2013-02-05
    • 1970-01-01
    • 2020-06-22
    • 2016-01-08
    • 2016-12-30
    相关资源
    最近更新 更多