Rilaxx ta' JavaScript Node.js 17.0 min-naħa tas-server

Node.js 17.0, pjattaforma għat-tħaddim ta' applikazzjonijiet tan-netwerk f'JavaScript, ġiet rilaxxata. Node.js 17.0 hija fergħa ta 'appoġġ regolari li se tkompli tirċievi aġġornamenti sa Ġunju 2022. Fil-jiem li ġejjin, se titlesta l-istabbilizzazzjoni tal-fergħa Node.js 16, li se tirċievi status LTS u se tkun appoġġjata sa April 2024. Il-manutenzjoni tal-fergħa LTS preċedenti ta 'Node.js 14.0 se ddum sa April 2023, u s-sena ta' qabel l-aħħar fergħa LTS 12.0 sa April 2022.

Titjib ewlieni:

  • Il-magna V8 ġiet aġġornata għall-verżjoni 9.5.
  • L-implimentazzjoni tal-varjanti tal-API bażika bbażata fuq l-użu tal-interface tal-kompjuters asinkroniku Promise kompliet. Minbarra l-APIs tat-Timers Promises u Streams Promises offruti qabel, Node.js 17.0 jintroduċi l-API Readline Promise għall-qari tad-dejta linja b'linja bl-użu tal-modulu readline. importazzjoni * bħala readline minn 'node:readline/promises'; importazzjoni { stdin bħala input, stdout bħala output } minn 'proċess'; const rl = readline.createInterface ({ input, output }); const answer = await rl.question('X'taħseb dwar Node.js?'); console.log('Grazzi tal-feedback siewi tiegħek: ${answer}'); rl.close();
  • Il-librerija OpenSSL fornuta ġiet aġġornata għall-verżjoni 3.0 (jintuża furketta quictls/openssl bl-appoġġ tal-protokoll QUIC attivat).
  • Ippermettiet li l-verżjoni Node.js tintwera fi stack traċċi li joħorġu f'każ ta 'żbalji fatali li jikkawżaw li l-applikazzjoni tintemm.

Barra minn hekk, nistgħu nsemmu l-eliminazzjoni ta 'żewġ vulnerabbiltajiet fil-fergħat attwali ta' Node.js (CVE-2021-22959, CVE-2021-22960), li jagħmluha possibbli li jitwettqu attakki "HTTP Request Smuggling" (HRS), li inessu nidħlu fil-kontenut tat-talbiet ta 'utenti oħra pproċessati fl-istess ħajt bejn il-frontend u l-backend (per eżempju, kodiċi JavaScript malizzjuż jista' jiddaħħal fis-sessjoni ta 'utent ieħor). Dettalji se jiġu żvelati aktar tard, iżda għalissa nafu biss li l-problemi huma kkawżati minn immaniġġjar ħażin ta 'spazji bejn l-isem tal-header HTTP u l-kolon, kif ukoll immaniġġjar differenti ta' karattri ta 'ritorn tal-ġarr u line feed fil-blokka tal-parametri użata meta tittrażmetti il-korp tat-talba f'partijiet fil-mod "bċejjeċ" "

Ejjew infakkarkom li l-pjattaforma Node.js tista 'tintuża kemm għall-appoġġ tan-naħa tas-server tal-applikazzjonijiet tal-Web kif ukoll għall-ħolqien ta' programmi ordinarji tan-netwerk tal-klijenti u tas-server. Biex tespandi l-funzjonalità tal-applikazzjonijiet għal Node.js, ġiet ippreparata ġabra kbira ta 'moduli, li fiha tista' ssib moduli bl-implimentazzjoni ta 'HTTP, SMTP, XMPP, DNS, FTP, IMAP, servers u klijenti POP3, moduli għall-integrazzjoni b'diversi oqfsa tal-web, WebSocket u Ajax handlers, konnetturi għal DBMS (MySQL, PostgreSQL, SQLite, MongoDB), magni tal-mudelli, magni CSS, implimentazzjonijiet ta 'algoritmi kriptografiċi u sistemi ta' awtorizzazzjoni (OAuth), parsers XML.

Biex jiġi żgurat l-ipproċessar ta 'numru kbir ta' talbiet paralleli, Node.js juża mudell ta 'eżekuzzjoni ta' kodiċi asinkronu bbażat fuq l-immaniġġjar ta 'avvenimenti li ma jimblukkawx u d-definizzjoni ta' handlers ta 'callback. Metodi appoġġjati għall-konnessjonijiet multiplexing huma epoll, kqueue, /dev/poll, u select. Għall-multiplexing tal-konnessjoni, tintuża l-librerija libuv, li hija add-on għal libev fuq sistemi Unix u IOCP fuq Windows. Il-librerija libeio tintuża biex tinħoloq pool ta 'ħajt, u c-ares huwa integrat biex iwettaq mistoqsijiet DNS f'modalità mhux imblukkata. Is-sejħiet kollha tas-sistema li jikkawżaw l-imblukkar huma eżegwiti ġewwa l-pool tal-ħajt u mbagħad, bħal dawk li jimmaniġġjaw is-sinjali, jittrasferixxu r-riżultat tax-xogħol tagħhom lura permezz ta 'pajp (pajp) bla isem. L-eżekuzzjoni tal-kodiċi JavaScript hija pprovduta permezz tal-użu tal-magna V8 żviluppata minn Google (barra minn hekk, Microsoft qed tiżviluppa verżjoni ta 'Node.js bil-magna Chakra-Core).

Fil-qalba tiegħu, Node.js huwa simili għall-Perl AnyEvent, Ruby Event Machine, Python Twisted oqfsa, u l-implimentazzjoni tal-avvenimenti Tcl, iżda l-linja tal-avvenimenti f'Node.js hija moħbija mill-iżviluppatur u tixbaħ l-immaniġġjar tal-avvenimenti f'applikazzjoni tal-web li taħdem. fil-browser. Meta tikteb applikazzjonijiet għal node.js, trid tikkunsidra l-ispeċifiċitajiet tal-ipprogrammar mmexxi mill-avvenimenti, pereżempju, minflok ma tagħmel "var result = db.query ("select..");" bl-istennija għat-tlestija tax-xogħol u l-ipproċessar sussegwenti tar-riżultati, Node.js juża l-prinċipju ta 'eżekuzzjoni asinkronika, i.e. il-kodiċi jinbidel f'"db.query ("select..", funzjoni (riżultat) {proċessar tar-riżultat});", li fih il-kontroll jgħaddi istantanjament għal aktar kodiċi, u r-riżultat tal-mistoqsija jiġi pproċessat hekk kif tasal id-data.

Sors: opennet.ru

Żid kumment