ΠΠ²ΡΠΎΡ Π½Π° Π½Π°ΠΏΠΈΡΠ°Π½ΠΎΡΠΎ Π½Π° Rust ΡΠ΅Π± ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΈΠ·ΡΡΠΈΡ ΡΠ»Π΅Π΄ ΠΊΡΠΈΡΠΈΠΊΠ° Π·Π° βΠ½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°β Π½Π° Π΅Π·ΠΈΠΊΠ° Rust. Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ actix-web, ΠΏΠ°ΠΊΠ΅ΡΡΡ, ΠΊΠΎΠΉΡΠΎ Π΅ ΠΈΠ·ΡΠ΅Π³Π»Π΅Π½ Π½Π°Π΄ 800 Ρ ΠΈΠ»ΡΠ΄ΠΈ ΠΏΡΡΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π²Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° http-ΡΡΡΠ²ΡΡΠ½Π° ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Rust, ΡΡΡΡΠ΅Π΄ΠΎΡΠΎΡΠ°Π²Π°ΠΉΠΊΠΈ ΡΠ΅ Π²ΡΡΡ Ρ ΠΏΠΎΡΡΠΈΠ³Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΈ Π² ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΎΠ²Π΅ Π½Π° ΡΠ΅Π± ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ.
ΠΠ»ΠΈΠ·ΠΎ Π΄ΠΎ ΠΈΠ½ΡΠΈΠ΄Π΅Π½ΡΠ° Π² ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Π² GitHub Π±Π΅ΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΎ Π·Π° ΠΎΡΠΊΡΠΈΡΠΈΠ΅ Π½Π° Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (Undefined Behaviour) Π² ΠΊΠΎΠ΄Π° Π½Π° ΡΡΡΠ²ΡΡΠ° actix-web, ΠΊΠΎΠ΅ΡΠΎ Π²ΡΠ·Π½ΠΈΠΊΠ²Π° Π² Π±Π»ΠΎΠΊ, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ Π² ΡΠ΅ΠΆΠΈΠΌ (ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ). ΠΠ²ΡΠΎΡΡΡ Π½Π° actix-web Π½Π΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π° Π±Π»ΠΎΠΊΠ° unsafe, Π° ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠ·ΠΈ Π±Π»ΠΎΠΊ, Π·Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Π·Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° unsafe Π±ΡΡ Π° ΠΎΡΡ Π²ΡΡΠ»Π΅Π½ΠΈ ΠΎΡ Π°Π²ΡΠΎΡΠ°, ΠΊΠ°ΡΠΎ ΡΠ΅ ΠΏΠΎΠ·ΠΎΠ²Π° Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½Π°ΡΠ° Π·Π°Π³ΡΠ±Π° Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΈ Π·Π°ΡΠ²ΠΈ, ΡΠ΅ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° unsafe Π±Π΅Π· Π½ΡΠΆΠ΄Π° ΠΈ Π΅ ΡΠΈΠ³ΡΡΠ΅Π½ Π² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΠ° Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅ΡΠ΅, ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ Π² ΡΠΎΠ·ΠΈ ΡΠ΅ΠΆΠΈΠΌ.
Π§Π»Π΅Π½ Π½Π° Π΅ΠΊΠΈΠΏΠ° RustSec, ΠΊΠΎΠΉΡΠΎ ΠΎΡΠΊΡΠΈ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π½Π΅ ΡΠ΅ ΡΡΠ³Π»Π°ΡΠΈ ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈ, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ unsafe-Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π² actix-web Π΅ Π½Π΅ΠΎΠΏΡΠ°Π²Π΄Π°Π½ΠΎ. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠΎΠΉ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°
ΡΡΠ°ΡΠΈΡ ΠΎΡΠ½ΠΎΡΠ½ΠΎ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΡΡΡΠ° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° unsafe, Π² ΠΊΠΎΡΡΠΎ ΠΎΡΠ²Π΅Π½ Π²ΡΠΈΡΠΊΠΎ Π΄ΡΡΠ³ΠΎ ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π°, ΡΠ΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² actix-web Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ (Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΊΡΠΌ Π΅Π΄Π½ΠΈ ΠΈ ΡΡΡΠΈ Π΄Π°Π½Π½ΠΈ) ΠΌΠΎΠΆΠ΅ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ use-after-free ΠΈ Π½Π΅ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ°ΡΠ° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Rust.
Π‘Π»Π΅Π΄ ΡΡΠ°ΡΠΈΠΈ Π½Π° , Π² ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Π² GitHub ΡΡΠΎΠ»ΠΎΠ²Π΅ ΠΈ Π°Π²ΡΠΎΡΡΡ Π½Π° actix-web Π±Π΅ΡΠ΅ ΠΏΠΎΠ΄Π»ΠΎΠΆΠ΅Π½ Π½Π° ΠΈ ΠΎΠ±ΠΈΠ΄ΠΈ Π·Π° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Rust. ΠΠ²ΡΠΎΡΡΡ Π½Π΅ ΠΈΠ·Π΄ΡΡΠΆΠ° Π½Π° ΠΏΡΠΈΡ ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΡΠΎ Π½Π°Π»ΡΠ³Π°Π½Π΅, ΠΈ , Ρ ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈ ΡΡΠ°ΡΡΠΈΠ΅ΡΠΎ ΡΠΈ Π² Open Source.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
