ΠŸΡƒΡΠΊΠ°Π½Π΅ Π½Π° 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β€œ към бисквитката β€žoneβ€œ ΠΈ Ρ„Π»Π°Π³ΠΎΠ²Π΅Ρ‚Π΅ β€žnosecureβ€œ ΠΈ β€žsamesite=strictβ€œ Π·Π° всички останали бисквитки, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ слСдната конструкция:

    proxy_cookie_flags Π΅Π΄ΠΈΠ½ httponly;
    proxy_cookie_flags ~ nosecure samesite=строг;

  • Подобна Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° userid_flags Π·Π° добавянС Π½Π° Ρ„Π»Π°Π³ΠΎΠ²Π΅ към Cookie ΡΡŠΡ‰ΠΎ сС ΠΏΡ€ΠΈΠ»Π°Π³Π° Π·Π° ΠΌΠΎΠ΄ΡƒΠ»Π° ngx_http_userid.

Π•Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ сС ΡΡŠΡΡ‚ΠΎΡ ΠΈΠ·Π΄Π°Π²Π°Π½Π΅ njs 0.4.4, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π½Π° JavaScript Π·Π° ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€Π° nginx. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΡŠΡ‚ njs ΠΏΡ€ΠΈΠ»Π°Π³Π° стандартитС Π½Π° ECMAScript ΠΈ Π²ΠΈ позволява Π΄Π° Ρ€Π°Π·ΡˆΠΈΡ€ΠΈΡ‚Π΅ способността Π½Π° nginx Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° заявки с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° скриптовС Π² конфигурацията. Π‘ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Π΅Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π΅Π½ Ρ„Π°ΠΉΠ» Π·Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ° Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° заявки, Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° конфигурация, Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° заявка/ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ ΠΈΠ»ΠΈ Π±ΡŠΡ€Π·ΠΎ създаванС Π½Π° ΠΌΡŠΠ½ΠΈΡ‡Π΅Ρ‚Π° Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π² ΡƒΠ΅Π± прилоТСнията. Π’ Π½ΠΎΠ²Π°Ρ‚Π° вСрсия:

  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π²ΠΈΠ·ΡƒΠ°Π»Π½ΠΎ раздСлянС Π½Π° Ρ†ΠΈΡ„Ρ€ΠΈ Π² числа (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€ž1_000β€œ).
  • Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈ липсващи ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° %TypedArray%.prototype: every(), filter(), find(), findIndex(), forEach(), includes(), 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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€