DeprecationWarning: Buffer () ist aufgrund von Sicherheits- und Usability-Problemen veraltet, wenn ich mein Skript auf einen anderen Server verschiebe


126

Fehler beim Verschieben des Skripts auf einen anderen Server.

(Knoten: 15707) [DEP0005] DeprecationWarning: Buffer () ist aufgrund von Sicherheits- und Usability-Problemen veraltet. Verwenden Sie stattdessen die Methoden Buffer.alloc (), Buffer.allocUnsafe () oder Buffer.from ().

Aktuelle Versionen:

Ubuntu 16.04.4 LTS  
Node - v10.9.0  
NPM - 6.2.0  

Vorherige Version:

Ubuntu 14.04.3 LTS
NPM - 3.10.10
Node - v6.10.3


exports.basicAuthentication = function (req, res, next) {
    console.log("basicAuthentication");
    if (!req.headers.authorization) {
        return res.status(401).send({
            message: "Unauthorised access"
        });
    }
    var auth = req.headers.authorization;
    var baseAuth = auth.replace("Basic", "");
    baseAuth = baseAuth.trim();
    var userPasswordString = new Buffer(baseAuth, 'base64').toString('ascii');
    var credentials = userPasswordString.split(':');

    var username = credentials[0] !== undefined ? credentials[0] : '';
    var password = credentials[1] !== undefined ? credentials[1] : '';
    var userQuery = {mobilenumber: username, otp: password};
    console.log(userQuery);
    User.findOne(userQuery).exec(function (err, userinfo) {
        if (err || !userinfo) {
             return res.status(401).send({
                message: "Unauthorised access"
             });
        } else {
            req.user = userinfo;
            next();
        }
    });

 }

1
Hast du diesen Thread überprüft? github.com/yarnpkg/yarn/issues/5770
Hemadri Dasari

3
Dies ist kein Fehler, sondern eine Warnung, dass diese Methode zum Erstellen eines Puffers veraltet ist: nodejs.org/api/buffer.html#buffer_new_buffer_string_encoding
stdob--

Antworten:


308
new Buffer(number)            // Old
Buffer.alloc(number)          // New

new Buffer(string)            // Old
Buffer.from(string)           // New

new Buffer(string, encoding)  // Old
Buffer.from(string, encoding) // New

new Buffer(...arguments)      // Old
Buffer.from(...arguments)     // New

Beachten Sie, dass Buffer.alloc () in den aktuellen Node.js-Versionen auch schneller ist als die neue Buffer (size) .fill (0), was Sie sonst benötigen würden, um eine Nullfüllung sicherzustellen.


3
Was ist, wenn ich keinen neuen Buffer () in meinem Code habe? Ich habe es nur in package-lock.json?
Khaled Jamal

@ KhaledJamal was genau hast du in package-lock.json?
Nebojsa Sapic

2
@NebojsaSapic Nachdem ich das Problem verfolgt hatte, stellte ich fest, dass server.js es verwendete, nachdem ich meinem Projekt Angular Universal hinzugefügt hatte. Ich glaube, das liegt daran, dass ich nicht die neueste Version von It verwende.
Khaled Jamal

@ KhaledJamal danke, dass Sie Ihr Problem angesprochen haben und es für den Beitrag archiviert haben, wenn jemand das gleiche Problem hat
Nebojsa Sapic

Ich sehe auch das gleiche Problem wie @KhaledJamal, als ich mein Winkelprojekt durch Hinzufügen von Angular Universal in serverseitiges Rendering konvertierte.
user2869612

16

Die Verwendung des veralteten new Buffer()Konstruktors (iE, wie er von Yarn verwendet wird) kann zu veralteten Warnungen führen. Daher sollte man NICHT den veralteten / unsicheren Pufferkonstruktor verwenden.

Entsprechend der Abschreibungswarnung new Buffer()sollte durch eine der folgenden ersetzt werden:

  • Buffer.alloc()
  • Buffer.allocUnsafe() oder
  • Buffer.from()

Eine andere Option, um dieses Problem zu vermeiden, wäre die Verwendung des Safe-Buffer-Pakets.

Sie können auch versuchen (bei Verwendung von Garn ..):

yarn global add yarn

wie hier erwähnt: Link

Ein weiterer Vorschlag aus den Kommentaren (thx to gkiely): self-update

Hinweis: Selbstaktualisierung ist nicht verfügbar. Siehe Richtlinien zum Erzwingen von Versionen innerhalb eines Projekts

Führen Sie aus, um Ihre Version von Yarn zu aktualisieren

curl --compressed -o- -L https://yarnpkg.com/install.sh | bash

1
Was ist, wenn ich keinen neuen Buffer () in meinem Code habe? Ich habe es gerade in package-lock.json
Khaled Jamal

Einfache Möglichkeit, das Garn zu aktualisieren: Legacy.yarnpkg.com/de/docs/cli/self-update
gkiely

0
var userPasswordString = new Buffer(baseAuth, 'base64').toString('ascii');

Ändern Sie diese Zeile von Ihrem Code in diesen -

var userPasswordString = Buffer.from(baseAuth, 'base64').toString('ascii');

oder in meinem Fall habe ich die Codierung in umgekehrter Reihenfolge angegeben

var userPasswordString = Buffer.from(baseAuth, 'utf-8').toString('base64');
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.