nginx 1.19.3 เจ…เจคเฉ‡ njs 0.4.4 เจฆเฉ€ เจฐเจฟเจฒเฉ€เจœเจผ

เจฆเจพ เจ—เจ เจจ เจ•เฉ€เจคเจพ เจ…เฉฑเจชเจธเจŸเจฐเฉ€เจฎ เจฐเฉ€เจฒเฉ€เจœเจผ nginx 1.19.3, เจœเจฟเจธ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจจเจตเฉ€เจ†เจ‚ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจฆเจพ เจตเจฟเจ•เจพเจธ เจœเจพเจฐเฉ€ เจนเฉˆ (เจธเจฎเจพเจ‚เจคเจฐ เจธเจฎเจฐเจฅเจฟเจค เจธเจฅเจฟเจฐ เจตเจฟเฉฑเจš เจธเจผเจพเจ–เจพ 1.18 เจธเจฟเจฐเจซ เจ—เฉฐเจญเฉ€เจฐ เจ—เจฒเจคเฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจฆเฉ‡ เจ–เจพเจคเจฎเฉ‡ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจฌเจฆเจฒเจพเจ… เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ).

เจฎเฉเฉฑเจ– เจคเจฌเจฆเฉ€เจฒเฉ€:

  • เจฎเฉ‹เจกเฉ€เจŠเจฒ เจธเจผเจพเจฎเจฟเจฒ เจนเฉˆ ngx_stream_set_module, เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฎเฉเฉฑเจฒ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ

    เจธเจฐเจตเจฐ {
    12345 เจจเฉ‚เฉฐ เจธเฉเจฃเฉ‹;
    $true 1 เจธเฉˆเฉฑเจŸ เจ•เจฐเฉ‹;
    }

  • เจจเจฟเจฐเจฆเฉ‡เจธเจผ เจœเฉ‹เฉœเจฟเจ† เจ—เจฟเจ† proxy_cookie_flags เจชเฉเจฐเฉŒเจ•เจธเฉ€เจก เจ•เฉเจจเฉˆเจ•เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจ•เฉ‚เจ•เฉ€เจœเจผ เจฒเจˆ เจซเจฒเฉˆเจ— เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจฒเจˆเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ•เฉ‚เจ•เฉ€ โ€œoneโ€ เจตเจฟเฉฑเจš โ€œhttponlyโ€ เจซเจฒเฉˆเจ— เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจธเจพเจฐเฉ€เจ†เจ‚ เจ•เฉ‚เจ•เฉ€เจœเจผ เจฒเจˆ โ€œnosecureโ€ เจ…เจคเฉ‡ โ€œsamesite=strictโ€ เจซเจฒเฉˆเจ— เจœเฉ‹เฉœเจจ เจฒเจˆ, เจคเฉเจธเฉ€เจ‚ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจจเจฟเจฐเจฎเจพเจฃ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹:

    proxy_cookie_flags เจ‡เฉฑเจ• httponly;
    proxy_cookie_flags ~ nosecure samesite=strict;

  • เจธเจฎเจพเจจ เจจเจฟเจฐเจฆเฉ‡เจธเจผ userid_flags เจ•เฉ‚เจ•เฉ€ เจตเจฟเฉฑเจš เจซเจฒเฉˆเจ— เจœเฉ‹เฉœเจจ เจฒเจˆ ngx_http_userid เจฎเฉ‹เจกเฉ€เจŠเจฒ เจฒเจˆ เจตเฉ€ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค

เจจเจพเจฒ เจนเฉ€ เจนเฉ‹เจ‡เจ† เจฐเจฟเจฒเฉ€เจœเจผ njs 0.4.4, nginx เจตเฉˆเฉฑเจฌ เจธเจฐเจตเจฐ เจฒเจˆ เจ‡เฉฑเจ• JavaScript เจฆเฉเจญเจพเจธเจผเฉ€เจเฅค njs เจฆเฉเจญเจพเจธเจผเฉ€เจ ECMAScript เจฎเจฟเจ†เจฐเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเฉฑเจš เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ 'เจคเฉ‡ เจ•เจพเจฐเจตเจพเจˆ เจ•เจฐเจจ เจฒเจˆ nginx เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจตเจงเจพเจ‰เจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚, เจ‡เฉฑเจ• เจธเฉฐเจฐเจšเจจเจพ เจคเจฟเจ†เจฐ เจ•เจฐเจจ, เจ—เจคเฉ€เจธเจผเฉ€เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจœเจตเจพเจฌ เจฌเจฃเจพเจ‰เจฃ, เจ‡เฉฑเจ• เจฌเฉ‡เจจเจคเฉ€/เจœเจตเจพเจฌ เจจเฉ‚เฉฐ เจธเฉ‹เจงเจฃ, เจœเจพเจ‚ เจตเฉˆเจฌ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฒเจˆ เจธเจŸเฉฑเจฌ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ‰เฉฑเจจเจค เจคเจฐเจ• เจจเฉ‚เฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจจเจตเฉ‡เจ‚ เจธเฉฐเจธเจ•เจฐเจฃ เจตเจฟเฉฑเจš:

  • เจธเฉฐเจ–เจฟเจ†เจตเจพเจ‚ เจตเจฟเฉฑเจš เจ…เฉฐเจ•เจพเจ‚ เจฆเฉ‡ เจตเจฟเจœเจผเฉ‚เจ…เจฒ เจตเจฟเจญเจพเจœเจจ เจฒเจˆ เจธเจฎเจฐเจฅเจจ เจœเฉ‹เฉœเจฟเจ† เจ—เจฟเจ† (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, โ€œ1_000โ€)เฅค
  • %TypedArray%.prototype เจฒเจˆ เจ—เฉเฉฐเจฎ เจขเฉฐเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ: every(), เจซเจฟเจฒเจŸเจฐ(), Find(), FindIndex(), forEach(), includes(), indexOf(), lastIndexOf(), map(), reduce(), 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

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹