Verëffentlechung vun der Server-Säit JavaScript Plattform Node.js 17.0

Node.js 17.0, eng Plattform fir Netzwierkapplikatiounen a JavaScript ze lafen, gouf verëffentlecht. Node.js 17.0 ass eng regulär Ënnerstëtzungszweig déi weider Updates bis Juni 2022 kréien. An den nächsten Deeg gëtt d'Stabiliséierung vun der Node.js 16 Branche ofgeschloss, déi den LTS Status kritt a bis Abrëll 2024 ënnerstëtzt gëtt. Ënnerhalt vun der viregter LTS Branche vun Node.js 14.0 dauert bis Abrëll 2023, an d'Joer virdrun LTS Branche 12.0 bis Abrëll 2022.

Main Verbesserungen:

  • De V8-Motor gouf op d'Versioun 9.5 aktualiséiert.
  • D'Ëmsetze vu Varianten vun der Basis API baséiert op der Verwäertung vun der Promise asynchroner Recheninterface ass weidergaang. Zousätzlech zu de virdru ugebueden Timers Promises a Streams Promises APIs, stellt Node.js 17.0 d'Readline Promise API fir d'Liesen vun Daten Linn fir Zeil mam Readline Modul. importéieren * als Lieslinn vun 'Node:readline/promises'; importéieren {stdin als Input, stdout als Output} vum 'Prozess'; const rl = readline.createInterface({ input, output }); const Äntwert = await rl.question('Wat haalt Dir vun Node.js?'); console.log('Merci fir Äre wäertvolle Feedback: ${Äntwert}'); rl.close();
  • Déi geliwwert OpenSSL Bibliothéik gouf op Versioun 3.0 aktualiséiert (eng quictls / openssl Gabel mat QUIC Protokoll Support aktivéiert gëtt benotzt).
  • Aktivéiert d'Node.js Versioun fir an de Stackspuren ze weisen, déi am Fall vu fatale Feeler erausginn, déi d'Applikatioun ofschléissen.

Zousätzlech kënne mir d'Eliminatioun vun zwou Schwächen an den aktuellen Filialen vun Node.js (CVE-2021-22959, CVE-2021-22960) ernimmen, déi et méiglech maachen "HTTP Request Smuggling" (HRS) Attacken auszeféieren, déi erlaabt eis an den Inhalt vun den Ufroe vun anere Benotzer, déi am selwechte Fuedem tëscht dem Frontend an dem Backend veraarbecht ginn (zum Beispill, béiswëlleg JavaScript Code kann an d'Sessioun vun engem anere Benotzer agefouert ginn). Detailer ginn spéider opgedeckt, awer fir de Moment wësse mer nëmmen datt d'Problemer duerch falsch Handhabung vu Plazen tëscht dem HTTP Header Numm an dem Colon verursaacht ginn, souwéi ënnerschiddlech Handhabung vu Carriage Return a Line Feed Charaktere am Parameterblock benotzt beim Iwwerdroen den Ufro Kierper an Deeler am "Chunked" Modus "

Loosst eis drun erënneren datt d'Node.js Plattform souwuel fir Server-Säit Ënnerstëtzung vu Webapplikatiounen benotzt ka ginn a fir gewéinlech Client- a Servernetzprogrammer ze kreéieren. Fir d'Funktionalitéit vun Uwendungen fir Node.js auszebauen, ass eng grouss Sammlung vu Moduler virbereet ginn, an deenen Dir Moduler mat der Ëmsetzung vun HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 Server a Clienten, Moduler fir Integratioun fannt mat verschiddene Web Kaderen, WebSocket an Ajax Handler, Connectoren op DBMS (MySQL, PostgreSQL, SQLite, MongoDB), Templatemotoren, CSS Motoren, Implementatioune vu kryptographesche Algorithmen an Autorisatiounssystemer (OAuth), XML Parser.

Fir d'Veraarbechtung vun enger grousser Zuel vu parallelen Ufroen ze garantéieren, benotzt Node.js en asynchrone Code Ausféierungsmodell baséiert op net-blockéierend Eventhandhabung an der Definitioun vu Callback Handler. Ënnerstëtzt Methoden fir Multiplexing Verbindungen sinn epoll, kqueue, /dev/poll, a wielt. Fir Verbindungsmultiplexing gëtt d'libuv-Bibliothéik benotzt, wat en Add-on fir libev op Unix Systemer an IOCP op Windows ass. D'libeio-Bibliothéik gëtt benotzt fir e Fuedempool ze kreéieren, an c-ares ass integréiert fir DNS Ufroen am net-blockéierende Modus auszeféieren. All Systemappellen, déi d'Blockéierung verursaachen, ginn am Fuedempool ausgefouert an dann, wéi Signalhandteren, d'Resultat vun hirer Aarbecht duerch en onbenannt Päif (Päif) zréckginn. D'Ausféierung vum JavaScript-Code gëtt duerch d'Benotzung vum V8-Motor, dee vu Google entwéckelt gouf, zur Verfügung gestallt (ausserdeem entwéckelt Microsoft eng Versioun vum Node.js mam Chakra-Core-Motor).

Am Kär ass Node.js ähnlech wéi de Perl AnyEvent, Ruby Event Machine, Python Twisted Frameworks, an d'Tcl Event Implementatioun, awer d'Event Loop am Node.js ass vum Entwéckler verstoppt a gläicht Eventhandhabung an enger Webapplikatioun déi leeft am Browser. Wann Dir Applikatiounen fir node.js schreift, musst Dir d'Spezifizitéite vun der Event-Undriff Programméierung berücksichtegen, zum Beispill, anstatt "var result = db.query ("wielt ..");" mat der Erwaardung vun der Aarbecht an der spéiderer Veraarbechtung vun de Resultater, benotzt Node.js de Prinzip vun der asynchroner Ausféierung, d.h. de Code gëtt transforméiert an "db.query ("wielt ..", Funktioun (Resultat) {Resultatveraarbechtung});", an där d'Kontroll direkt op weidere Code passéiert, an d'Ufroresultat gëtt veraarbecht wéi d'Daten ukommen.

Source: opennet.ru

Setzt e Commentaire