source

사용 안 함 경고: 스크립트를 다른 서버로 이동할 때 보안 및 사용 편의성 문제로 인해 버퍼()가 사용되지 않습니다.

myloves 2023. 5. 28. 23:40

사용 안 함 경고: 스크립트를 다른 서버로 이동할 때 보안 및 사용 편의성 문제로 인해 버퍼()가 사용되지 않습니다.

스크립트를 다른 서버로 이동할 때 오류가 발생합니다.

(노드:15707) [DEP0005] 사용 중지 경고: 버퍼()가 보안 및 사용성 문제로 인해 사용되지 않습니다.대신 Buffer.alloc(), Buffer.allocUnsafe() 또는 Buffer.from() 메서드를 사용하십시오.

현재 버전:

Ubuntu 16.04.4 LTS  
Node - v10.9.0  
NPM - 6.2.0  

이전 버전:

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();
        }
    });

 }
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

메모또한 현재 Node.js 버전에서 Buffer.alloc()가 새 Buffer(size).fill(0)보다 빠르며, 이는 제로 필링을 보장하기 위해 필요한 것입니다.

더 이상 사용되지 않는 사용new Buffer()생성자(즉, Yarn에서 사용하는 경우)는 사용 중지 경고를 발생시킬 수 있습니다.따라서 사용되지 않는/안전하지 않은 버퍼 생성기를 사용해서는 안 됩니다.

사용 중지 경고에 따라new Buffer()다음 중 하나로 대체해야 합니다.

  • Buffer.alloc()
  • Buffer.allocUnsafe()또는
  • Buffer.from()

이 문제를 방지하기 위한 또 다른 옵션은 안전 버퍼 패키지를 대신 사용하는 것입니다.

(실을 사용할 때) 시도해 볼 수도 있습니다.):

yarn global add yarn

여기에 언급된 바와 같이: 링크

댓글의 다른 제안(thx to gkelly): 자체 업데이트

참고: 자체 업데이트를 사용할 수 없습니다.프로젝트 내 버전 적용 정책 보기

Yarn의 버전을 업데이트하려면 다음을 실행합니다.

curl --compressed -o- -L https://yarnpkg.com/install.sh | bash
var userPasswordString = new Buffer(baseAuth, 'base64').toString('ascii');

이 줄을 코드에서 다음 줄로 변경 -

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

아니면 제 경우에는 역순으로 인코딩을 제공했습니다.

var userPasswordString = Buffer.from(baseAuth, 'utf-8').toString('base64');

그러면 오류가 발생하는 사람들을 위해 작은 예를 들어보겠습니다.

필요에 따라 Buffer.alloc(size) 대신 Buffer.from(string)을 사용할 수도 있습니다.

Buffer.alloc(크기) 사용

buf = Buffer.alloc(26); 
for (var i = 0; i < 26; i++) {
buf[i] = i + 97;}

console.log(buf.toString('ascii'));
console.log(buf.toString('ascii'));
console.log(buf.toString('utf8'));
console.log(buf.toString(undefined));

Buffer.from(string) 사용

var buffer1 = Buffer.from('Hello Word!!!!');
var buffer2 = Buffer.from('Hello nldflsd343');

나머지 코드는 중요하지 않지만 버퍼 사용을 몇 가지 보여줍니다.

var buffer3 = Buffer.concat([buffer1, buffer2]);
console.log("buffer3 content: " + buffer3.toString());

var result = buffer1.compare(buffer2);

if (result < 0) {
    console.log(buffer1 + "comes before " + buffer2);
} else if (result == 0) {
    console.log(buffer1 + "is same as " + buffer2);
} else if (result > 0) {
    console.log(buffer1 + "comes before " + buffer2);
}

귀사의 비즈니스에 도움이 되기를 바랍니다.

언급URL : https://stackoverflow.com/questions/52165333/deprecationwarning-buffer-is-deprecated-due-to-security-and-usability-issues