nginx 1.19.3 рд░ njs 0.4.4 рдХреЛ рд░рд┐рд▓реАрдЬ

рдЧрдарди рднрдпреЛ рдЕрдкрд╕реНрдЯреНрд░реАрдо рд░рд┐рд▓реАрдЬ nginx 1.19.3, рдЬрд╕ рднрд┐рддреНрд░ рдирдпрд╛рдБ рдХреНрд╖рдорддрд╛рд╣рд░реВрдХреЛ рд╡рд┐рдХрд╛рд╕ рдЬрд╛рд░реА рдЫ (рд╕рдорд╛рдирд╛рдиреНрддрд░ рд╕рдорд░реНрдерд┐рдд рд╕реНрдерд┐рд░ рд╢рд╛рдЦрд╛ рез.резрео рдХреЗрд╡рд▓ рдЧрдореНрднреАрд░ рддреНрд░реБрдЯрд┐рд╣рд░реВ рд░ рдХрдордЬреЛрд░реАрд╣рд░реВрдХреЛ рдЙрдиреНрдореВрд▓рдирд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдмрдирд╛рдЗрдиреНрдЫ)ред

рдореБрдЦреНрдп рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реН:

  • рдореЛрдбреНрдпреБрд▓ рд╕рдорд╛рд╡реЗрд╢ рдЫ ngx_stream_set_module, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЪрд░рдорд╛ рдорд╛рди рддреЛрдХреНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ

    рд╕рд░реНрднрд░ {
    рд╕реБрдиреНрдиреБрд╣реЛрд╕реН 12345режXNUMXреж;
    $true 1 рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН;
    }

  • рдирд┐рд░реНрджреЗрд╢рди рдердкрд┐рдпреЛ proxy_cookie_flags рдкреНрд░реЛрдХреНрд╕реА рдЬрдбрд╛рдирд╣рд░реВрдорд╛ рдХреБрдХреАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЭрдгреНрдбрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдХреБрдХреА "рдПрдХ" рдорд╛ "httponly" рдЭрдгреНрдбрд╛ рдердкреНрди рд░ рдЕрдиреНрдп рд╕рдмреИ рдХреБрдХреАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ "nosecure" рд░ "samesite=strict" рдЭрдгреНрдбрд╛рд╣рд░реВ рдердкреНрди, рддрдкрд╛рдЗрдБ рдирд┐рдореНрди рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

    proxy_cookie_flags рдПрдХ httponly;
    proxy_cookie_flags ~ nosecure samesite = рд╕рдЦреНрдд;

  • рд╕рдорд╛рди рдирд┐рд░реНрджреЗрд╢рди userid_flags рдХреБрдХреАрдорд╛ рдЭрдгреНрдбрд╛ рдердкреНрдирдХреЛ рд▓рд╛рдЧрд┐ ngx_http_userid рдореЛрдбреНрдпреБрд▓рдХреЛ рд▓рд╛рдЧрд┐ рдкрдирд┐ рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдЫред

рдПрдХреИ рд╕рд╛рде рднрдпреЛ рд░рд┐рд▓реАрдЬ njs реж.рей.рео, nginx рд╡реЗрдм рд╕рд░реНрднрд░рдХреЛ рд▓рд╛рдЧрд┐ рдЬрд╛рднрд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреЛрднрд╛рд╖реЗред njs рдЕрдиреБрд╡рд╛рджрдХрд▓реЗ ECMAScript рдорд╛рдкрджрдгреНрдбрд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫ рд░ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рд▓рд┐рдкрд┐рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди nginx рдХреЛ рдХреНрд╖рдорддрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓рдорд╛ рдкреНрд░рд╢реЛрдзрди рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдиреНрдирдд рддрд░реНрдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрди, рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЙрддреНрдкрдиреНрди рдЧрд░реНрди, рдЧрддрд┐рд╢реАрд▓ рд░реВрдкрдорд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЙрддреНрдкрдиреНрди рдЧрд░реНрди, рдЕрдиреБрд░реЛрдз/рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдЧрд░реНрди, рд╡рд╛ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдорд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рджреНрд░реБрдд рд░реВрдкрдорд╛ рд╕реНрдЯрдмрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдгрдорд╛:

  • рд╕рдВрдЦреНрдпрд╛рд╣рд░реВрдорд╛ рдЕрдВрдХрд╣рд░реВрдХреЛ рджреГрд╢реНрдп рд╡рд┐рднрд╛рдЬрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкрд┐рдпреЛ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, "1_000")ред
  • %TypedArray%.prototype: every(), filter(), find(), findIndex(), forEach(), includes(), indexOf(), lastIndexOf(), рдирдХреНрд╕рд╛(), рдХрдо(), reduceRight(), рд░рд┐рд╡рд░реНрд╕(), рдХреЗрд╣рд┐()ред
  • %TypedArray%: from(), of() рдХреЛ рд▓рд╛рдЧрд┐ рдЫреБрдЯреЗрдХрд╛ рд╡рд┐рдзрд┐рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░рд┐рдпреЛред
  • DataView рд╡рд╕реНрддреБ рд▓рд╛рдЧреВ рдЧрд░рд┐рдпреЛред

    : >> (рдирдпрд╛рдБ DataView(buf.buffer)).getUint16()
    : 32974

  • рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдмрдлрд░ рд╡рд╕реНрддреБред

    : >> var buf = Buffer.from([0x80,206,177,206,178])
    : рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд
    : >> buf.slice(1).toString()
    : '╬▒╬▓'
    : >> buf.toString('base64')
    : 'gM6xzrI='

  • "crypto" рд░ "fs" рд╡рд┐рдзрд┐рд╣рд░реВрдорд╛ рдмрдлрд░ рд╡рд╕реНрддреБ рд╕рдорд░реНрдерди рдердкрд┐рдпреЛ, рд░ fs.readFile(), Hash.prototype.digest() рд░ Hmac.prototype.digest() рд▓реЗ рдмрдлрд░ рд╡рд╕реНрддреБрдХреЛ рдЙрджрд╛рд╣рд░рдг рдлрд┐рд░реНрддрд╛ рдЧрд░реЗрдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНтАНрдпреЛред
  • ArrayBuffer рд╕рдорд░реНрдерди TextDecoder.prototype.decode() рд╡рд┐рдзрд┐рдорд╛ рдердкрд┐рдПрдХреЛ рдЫред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди