แž€แžถแžšแž…แŸแž‰แž•แŸ’แžŸแžถแž™ nginx 1.19.3 แž“แžทแž„ njs 0.4.4

แž”แžถแž“แž”แž„แŸ’แž€แžพแžแžกแžพแž„ แž€แžถแžšโ€‹แž…แŸแž‰โ€‹แž•แŸ’แžŸแžถแž™โ€‹แžแžถแž„โ€‹แž›แžพ nginx 1.19.3แžŠแŸ‚แž›แž€แŸ’แž“แžปแž„แž“แŸ„แŸ‡แž€แžถแžšแžขแž—แžทแžœแžŒแŸ’แžแž“แŸแžŸแž˜แžแŸ’แžแž—แžถแž–แžแŸ’แž˜แžธแž“แŸ…แžแŸ‚แž”แž“แŸ’แž (แž˜แžถแž“แžŸแŸ’แžแŸแžšแž—แžถแž–แžŸแŸ’แžšแž”แž‚แŸ’แž“แžถแŸ” แžŸแžถแžแžถ 1.18 แž˜แžถแž“แžแŸ‚แž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแžŠแŸ‚แž›แž‘แžถแž€แŸ‹แž‘แž„แž“แžนแž„แž€แžถแžšแž›แžปแž”แž”แŸ†แž”แžถแžแŸ‹แž€แŸ†แž แžปแžŸแž’แŸ’แž„แž“แŸ‹แž’แŸ’แž„แžš แž“แžทแž„แž—แžถแž–แž„แžถแž™แžšแž„แž‚แŸ’แžšแŸ„แŸ‡แž”แŸ‰แžปแžŽแŸ’แžŽแŸ„แŸ‡แžŠแŸ‚แž›แžแŸ’แžšแžผแžœแž”แžถแž“แž’แŸ’แžœแžพแžกแžพแž„)แŸ”

แžŸแŸ†แžแžถแž“แŸ‹ แž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžš:

  • แž˜แŸ‰แžผแžŒแžปแž›แžแŸ’แžšแžผแžœแž”แžถแž“แžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž› ngx_stream_set_moduleแžŠแŸ‚แž›แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžขแŸ’แž“แž€แž€แŸ†แžŽแžแŸ‹แžแž˜แŸ’แž›แŸƒแž‘แŸ…แžขแžแŸแžšแž˜แžฝแž™แŸ”

    แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž˜แŸ {
    แžŸแŸ’แžแžถแž”แŸ‹ แŸจแŸ แŸจแŸ ;
    แž€แŸ†แžŽแžแŸ‹ $ True 1;
    }

  • แž€แžถแžšแžŽแŸ‚แž“แžถแŸ†แž”แž“แŸ’แžแŸ‚แž˜ แž”แŸ’แžšแžผแž€แžŸแŸŠแžธ_แžแžผแž‚แžธ_แž‘แž„แŸ‹ แžŠแžพแž˜แŸ’แž”แžธแž”แž‰แŸ’แž‡แžถแž€แŸ‹แž‘แž„แŸ‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžแžผแž‚แžธแž€แŸ’แž“แžปแž„แž€แžถแžšแžแž—แŸ’แž‡แžถแž”แŸ‹แž”แŸ’แžšแžผแž€แžŸแŸŠแžธแŸ” แžงแž‘แžถแž แžšแžŽแŸ แžŠแžพแž˜แŸ’แž”แžธแž”แž“แŸ’แžแŸ‚แž˜แž‘แž„แŸ‹ โ€œhttponlyโ€ แž‘แŸ… Cookie โ€œoneโ€ แž“แžทแž„แž‘แž„แŸ‹ โ€œnosecureโ€ แž“แžทแž„ โ€œsamesite=strictโ€ แžŸแž˜แŸ’แžšแžถแž”แŸ‹ Cookies แž•แŸ’แžŸแŸแž„แž‘แŸ€แžแž‘แžถแŸ†แž„แžขแžŸแŸ‹ แžขแŸ’แž“แž€แžขแžถแž…แž”แŸ’แžšแžพแžŸแŸ†แžŽแž„แŸ‹แžแžถแž„แž€แŸ’แžšแŸ„แž˜แŸ–

    proxy_cookie_flags แž˜แžฝแž™ httponly;
    proxy_cookie_flags ~ nosecure samesite=แžแžนแž„แžšแŸ‰แžนแž„;

  • แž€แžถแžšแžŽแŸ‚แž“แžถแŸ†แžŸแŸ’แžšแžŠแŸ€แž„แž‚แŸ’แž“แžถ userid_flags แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž”แž“แŸ’แžแŸ‚แž˜แž‘แž„แŸ‹แž‘แŸ…แžแžผแž‚แžธแž€แŸแžแŸ’แžšแžผแžœแž”แžถแž“แžขแž“แžปแžœแžแŸ’แžแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž˜แŸ‰แžผแžŒแžปแž› ngx_http_userid แž•แž„แžŠแŸ‚แžšแŸ”

แž€แŸ’แž“แžปแž„แž–แŸแž›แžŠแŸ†แžŽแžถแž›แž‚แŸ’แž“แžถ แž”แžถแž“แž€แžพแžแžกแžพแž„ แž€แžถแžšแžŠแŸ„แŸ‡แž›แŸ‚แž„ njs แŸ แŸกแŸฃแžŠแŸ‚แž›แž‡แžถแžขแŸ’แž“แž€แž”แž€แž”แŸ’แžšแŸ‚ JavaScript แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž˜แŸแž”แžŽแŸ’แžแžถแž‰ nginx แŸ” แžขแŸ’แž“แž€แž”แž€แž”แŸ’แžšแŸ‚ njs แžขแž“แžปแžœแžแŸ’แžแžŸแŸ’แžแž„แŸ‹แžŠแžถแžš ECMAScript แž“แžทแž„แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžขแŸ’แž“แž€แž–แž„แŸ’แžšแžธแž€แžŸแž˜แžแŸ’แžแž—แžถแž–แžšแž”แžŸแŸ‹ nginx แžŠแžพแž˜แŸ’แž”แžธแžŠแŸ†แžŽแžพแžšแž€แžถแžšแžŸแŸ†แžŽแžพแžŠแŸ„แž™แž”แŸ’แžšแžพแžŸแŸ’แž‚แŸ’แžšแžธแž”แž“แŸ…แž€แŸ’แž“แžปแž„แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แŸ” แžŸแŸ’แž‚แŸ’แžšแžธแž”แžขแžถแž…แžแŸ’แžšแžผแžœแž”แžถแž“แž”แŸ’แžšแžพแž“แŸ…แž€แŸ’แž“แžปแž„แžฏแž€แžŸแžถแžšแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แžŠแžพแž˜แŸ’แž”แžธแž€แŸ†แžŽแžแŸ‹แžแž€แŸ’แž€แžœแžทแž‡แŸ’แž‡แžถแž€แž˜แŸ’แžšแžทแžแžแŸ’แž–แžŸแŸ‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžŠแŸ†แžŽแžพแžšแž€แžถแžšแžŸแŸ†แžŽแžพ แž”แž„แŸ’แž€แžพแžแž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’ แž”แž„แŸ’แž€แžพแžแž€แžถแžšแž†แŸ’แž›แžพแž™แžแž”แž‡แžถแž›แž€แŸ’แžแžŽแŸˆแžแžถแž˜แžœแž“แŸ’แž แž€แŸ‚แž”แŸ’แžšแŸ‚แžŸแŸ†แžŽแžพ/แž€แžถแžšแž†แŸ’แž›แžพแž™แžแž” แžฌแž”แž„แŸ’แž€แžพแž stubs แž™แŸ‰แžถแž„แž†แžถแž”แŸ‹แžšแž แŸแžŸแžŠแžพแž˜แŸ’แž”แžธแžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž”แž‰แŸ’แž แžถแž“แŸ…แž€แŸ’แž“แžปแž„แž€แž˜แŸ’แž˜แžœแžทแž’แžธแž‚แŸแž แž‘แŸ†แž–แŸแžšแŸ” แž“แŸ…แž€แŸ’แž“แžปแž„แž€แŸ†แžŽแŸ‚แžแŸ’แž˜แžธแŸ–

  • แž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž”แŸ†แž”แŸ‚แž€แž›แŸแžแžŠแŸ‚แž›แž˜แžพแž›แžƒแžพแž‰แž‡แžถแž›แŸแž (แžงแž‘แžถแž แžšแžŽแŸ โ€œ1_000โ€)แŸ”
  • แž”แžถแž“แžขแž“แžปแžœแžแŸ’แžแžœแžทแž’แžธแžŸแžถแžŸแŸ’แžšแŸ’แžแžŠแŸ‚แž›แž”แžถแžแŸ‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹ %TypedArray%.prototype: every(), filter(), find(), findIndex(), forEach(), include(), indexOf(), lastIndexOf(), map(), reduce(), reduceRight(), แž”แž‰แŸ’แž…แŸ’แžšแžถแžŸ(), some() แŸ”
  • แž”แžถแž“แžขแž“แžปแžœแžแŸ’แžแžœแžทแž’แžธแžŸแžถแžŸแŸ’แžšแŸ’แžแžŠแŸ‚แž›แž”แžถแžแŸ‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹ %TypedArray%: from(), of()แŸ”
  • แž”แžถแž“แžขแž“แžปแžœแžแŸ’แžแžœแžแŸ’แžแžป DataView แŸ”

    : >> (new DataView(buf.buffer)).getUint16()
    : 32974

  • แž”แžถแž“แžขแž“แžปแžœแžแŸ’แžแžœแžแŸ’แžแžปแžŸแžแžทแž”แžŽแŸ’แžŠแŸ„แŸ‡แžขแžถแžŸแž“แŸ’แž“แŸ”

    : >> 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

แž”แž“แŸ’แžแŸ‚แž˜แž˜แžแžทแž™แŸ„แž”แž›แŸ‹