사용 안 함 경고: 스크립트를 다른 서버로 이동할 때 보안 및 사용 편의성 문제로 인해 버퍼()가 사용되지 않습니다.
스크립트를 다른 서버로 이동할 때 오류가 발생합니다.
(노드: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
'source' 카테고리의 다른 글
| .NET의 app.config 또는 web.config에서 설정 읽기 (0) | 2023.05.28 |
|---|---|
| EDMX 모델에서 특정 테이블을 신속하게 찾는 방법은 무엇입니까? (0) | 2023.05.28 |
| XML SDK 2.0 열기 - 스프레드시트의 셀을 업데이트하는 방법은 무엇입니까? (0) | 2023.05.28 |
| Xcode 프로세스 시작 실패:보안. (0) | 2023.05.28 |
| 가장 유용한 속성 (0) | 2023.05.28 |