เบเบฒเบ™เบ›เปˆเบญเบ nginx 1.19.3 เปเบฅเบฐ njs 0.4.4

เบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™ เบเบฒเบ™เบ›เปˆเบญเบเบ™เป‰เปเบฒ nginx 1.19.3, เบžเบฒเบเปƒเบ™เบ—เบตเปˆเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบซเบกเปˆเบเบฑเบ‡เบชเบทเบšเบ•เปเปˆ (เปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ—เบตเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡ เบชเบฒเบ‚เบฒ 1.18 เบกเบตเบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบฅเบปเบšเบฅเป‰เบฒเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปเบฅเบฐเบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบ—เบตเปˆเบฎเป‰เบฒเบเปเบฎเบ‡เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™).

เบ•เบปเป‰เบ™โ€‹เบ•เป เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡:

  • เป‚เบกเบ”เบนเบ™เปเบกเปˆเบ™เบฅเบงเบก ngx_stream_set_module, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบ„เปˆเบฒเปƒเบซเป‰เบเบฑเบšเบ•เบปเบงเปเบ›

    เป€เบŠเบตเบšเป€เบงเบต {
    เบŸเบฑเบ‡ 12345;
    เบ•เบฑเป‰เบ‡ $true 1;
    }

  • เป€เบžเบตเปˆเบกเบ„เปเบฒเบชเบฑเปˆเบ‡ proxy_cookie_flags เป€เบžเบทเปˆเบญเบฅเบฐเบšเบธเบ—เบธเบ‡เบชเบณเบฅเบฑเบšเบ„เบธเบเบเบตเป‰เปƒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบžเบฃเบฑเบญเบเบŠเบต. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบกเบ—เบธเบ‡ โ€œhttponlyโ€ เปƒเบชเปˆ Cookie โ€œoneโ€, เปเบฅเบฐ โ€œnosecureโ€ เปเบฅเบฐ โ€œsamesite=strictโ€ flags for all other Cookies, you can use the following construction:

    proxy_cookie_flags เบซเบ™เบถเปˆเบ‡ httponly;
    proxy_cookie_flags ~ nosecure samesite=เป€เบ„เบฑเปˆเบ‡เบ„เบฑเบ”;

  • เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™ userid_flags เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ—เบธเบ‡เปƒเบชเปˆเบ„เบธเบเบเบตเบเบฑเบ‡เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบชเปเบฒเบฅเบฑเบšเป‚เบกเบ”เบนเบ™ ngx_http_userid.

เบžเป‰เบญเบกเบเบฑเบ™ เป„เบ”เป‰เบˆเบฑเบ”เบ‚เบถเป‰เบ™ เบ›เปˆเบญเบเบ•เบปเบง njs 0.4.4, เบ™เบฒเบเบžเบฒเบชเบฒ JavaScript เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒ nginx. เบ™เบฒเบเบžเบฒเบชเบฒ njs เบ›เบฐเบ•เบดเบšเบฑเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ ECMAScript เปเบฅเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ‚เบฐเบซเบเบฒเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ‚เบญเบ‡ nginx เปƒเบ™เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเป‚เบ”เบเปƒเบŠเป‰ scripts เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ. Scripts เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เป€เบซเบ”เบœเบปเบ™เบ‚เบฑเป‰เบ™เบชเบนเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป, เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ, เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เปเบšเบšเป„เบ”เบ™เบฒเบกเบดเบ, เปเบเป‰เป„เบ‚เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป / เบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡, เบซเบผเบทเบเบฒเบ™เบชเป‰เบฒเบ‡ stubs เบขเปˆเบฒเบ‡เป„เบงเบงเบฒเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบงเบฑเบš. เปƒเบ™โ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เปƒเบซเบกเปˆโ€‹:

  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบเบเบ•เบฒเบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบเปƒเบ™เบ•เบปเบงเป€เบฅเบ (เบ•เบปเบงเบขเปˆเบฒเบ‡, "1_000").
  • เบ›เบฐเบ•เบดเบšเบฑเบ”เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบ‚เบฒเบ”เบซเบฒเบเป„เบ›เบชเปเบฒเบฅเบฑเบš %TypedArray%.prototype: every(), filter(), find(), findIndex(), forEach(), include(), indexOf(), lastIndexOf(), map(), reduce(), reduceRight(), reverse(), some().
  • เบ›เบฐเบ•เบดเบšเบฑเบ”เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบ‚เบฒเบ”เบซเบฒเบเป„เบ›เบชเปเบฒเบฅเบฑเบš %TypedArray%: from(), of().
  • เบ›เบฐเบ•เบดเบšเบฑเบ”เบงเบฑเบ”เบ–เบธ DataView.

    : >> (เปƒเบซเบกเปˆ DataView(buf.buffer)).getUint16()
    : 32974

  • เบ›เบฐเบ•เบดเบšเบฑเบ”เบงเบฑเบ”เบ–เบธ Buffer.

    : >> var buf = Buffer.from([0x80,206,177,206,178])
    : เบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”
    : >> buf.slice(1).toString()
    : 'ฮฑฮฒ'
    : >> buf.toString('base64')
    : 'gM6xzrI='

  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบšเบงเบฑเบ”เบ–เบธ Buffer เปƒเบชเปˆเบงเบดเบ—เบตเบเบฒเบ™ "crypto" เปเบฅเบฐ "fs", เปเบฅเบฐเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒ fs.readFile(), Hash.prototype.digest() เปเบฅเบฐ Hmac.prototype.digest() เบชเบปเปˆเบ‡เบ„เบทเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธ Buffer.
  • เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ ArrayBuffer เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบงเบดเบ—เบตเบเบฒเบ™ TextDecoder.prototype.decode().

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™