অবচয়করণ সতর্কতা: আমি যখন আমার স্ক্রিপ্টটিকে অন্য সার্ভারে স্থানান্তর করি তখন সুরক্ষা এবং ব্যবহারযোগ্যতার সমস্যার কারণে বাফার () অবমূল্যায়ন করা হয়


128

স্ক্রিপ্টটি অন্য সার্ভারে সরানো হলে ত্রুটি পাওয়া।

(নোড: 15707) [DEP0005] অবমূল্যায়ন সতর্কতা: বাফার () নিরাপত্তা এবং ব্যবহারযোগ্যতার সমস্যার কারণে অবচয় হ'ল। পরিবর্তে বাফার.অলোক (), বাফার.এলোকউনসেফ (), বা বাফার.ফ্রাম () পদ্ধতিগুলি ব্যবহার করুন।

বর্তমান সংস্করণ:

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

 }

1
আপনি এই থ্রেড চেক করেছেন? github.com/yarnpkg/yarn/issues/5770
হেমাদ্রি দশারি

4
এটি কোনও ত্রুটি নয়, এটি একটি সতর্কতা যে বাফার তৈরির এই পদ্ধতির অবমূল্যায়ন
stdob--

উত্তর:


312
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

নোট করুন যে বাফার.লোক () বর্তমান নোড.জেএস সংস্করণগুলিতে নতুন বাফার (আকার) .ফিল (0) এর চেয়েও দ্রুত, যা আপনার অন্যথায় শূন্য-পূরণ নিশ্চিত করতে হবে।


3
আমার কোডে আমার কোনও নতুন বাফার () না থাকলে কী হবে? আমার কেবল এটি প্যাকেজ-লক.জসনে আছে?
খালেদ জামাল

@ খালেদ জামাল প্যাকেজ-লক.জসনে আপনার ঠিক কী আছে?
নেবোজসা সাপিক

2
@ নিউবোজাসাপিক বিষয়টি আবিষ্কার করার পরে আমি বুঝতে পেরেছিলাম যে আমার প্রকল্পে কৌনিক সার্বজনীন যুক্ত করার পরে সার্ভার.জেএস এটি ব্যবহার করছে, আমি বিশ্বাস করি কারণ এটি এর সর্বশেষতম সংস্করণটি ব্যবহার করছে না।
খালেদ জামাল

@ খালেদ জামাল আপনার সমস্যা উত্থাপনের জন্য ধন্যবাদ এবং যদি কেউ একই সমস্যা ভাগ করে নেয় তবে পোস্টটির জন্য এটি সংরক্ষণাগারভুক্ত করা হয়েছে
নেবোজসা সাপিক

আমি কংগ্রেড ইউনিভার্সাল যুক্ত করে আমার কৌনিক প্রকল্পটি সার্ভার সাইড রেন্ডারিংয়ে রূপান্তরিত করার সময় আমি @ খালেদ জামাল হিসাবে একই সমস্যাটি দেখতে পাচ্ছি।
ব্যবহারকারী 2869612

16

অননুমোদিত ব্যবহার new Buffer()(অর্থাত যেমন সুতো দ্বারা ব্যবহৃত) কন্সট্রাকটর থামিয়ে দেওয়া সতর্কবার্তা হতে পারে। অতএব অবহেলিত / অনিরাপদ বাফার কনস্ট্রাক্টর ব্যবহার করা উচিত নয়।

অবচয় অনুসারে সতর্কতাটির new Buffer()একটিতে প্রতিস্থাপন করা উচিত:

  • Buffer.alloc()
  • Buffer.allocUnsafe() অথবা
  • Buffer.from()

এই সমস্যাটি এড়াতে আরেকটি বিকল্পের পরিবর্তে সেফ-বাফার প্যাকেজটি ব্যবহার করা হবে।

আপনিও চেষ্টা করতে পারেন (সুতা ব্যবহার করার সময় ..):

yarn global add yarn

এখানে উল্লিখিত হিসাবে: লিঙ্ক

মন্তব্যগুলি থেকে আরও একটি পরামর্শ (thx থেকে gkiely): স্ব-আপডেট

দ্রষ্টব্য: স্ব-আপডেট উপলব্ধ নয়। একটি প্রকল্পের মধ্যে সংস্করণ প্রয়োগের জন্য নীতিগুলি দেখুন

আপনার সুতোর সংস্করণ আপডেট করার জন্য, চালান

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

1
আমার কোডে আমার কোনও নতুন বাফার () না থাকলে কী হবে? আমার কেবল এটি প্যাকেজ-লক.জসনে আছে
খালেদ জামাল

সুতা আপডেট করার সহজ উপায়: legacy.yarnpkg.com/en/docs/cli/self-update
gkiely

0
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');
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.