Publication de Ruby 3.2.0 Preview 1, introduisant le mécanisme de temporisation des expressions régulières

Ruby 3.2.0 Preview 1 est sorti. Cette version ajoute de nombreuses nouvelles fonctionnalités, ainsi que des performances optimisées.

Prise en charge de WebAssembly basé sur WASI

Il s'agit d'un premier portage de la prise en charge de WebAssembly basée sur WASI. Cette fonctionnalité permet aux binaires CRuby d'être utilisés sur les navigateurs Web, les environnements Serverless Edge et d'autres intégrateurs WebAssembly/WASI. Actuellement, ce port réussit les tests des suites de tests de base et d'amorçage sans utiliser l'API Thread.

Mécanisme de sortie du délai d'expiration des expressions régulières

Cette version introduit un mécanisme de sortie de délai d'attente d'expression régulière.

Regexp.timeout = 1.0

/^a*b?a*$/ =~ "a" * 50000 + "x"
#=> Regexp::TimeoutError is raised in one second

Étant donné que la correspondance des expressions régulières peut prendre beaucoup de temps, les attaquants peuvent l'utiliser pour effectuer des attaques DoS (expression régulière DoS ou ReDoS) lorsque le code tente de faire correspondre une expression régulière inefficace à une entrée non fiable. .

Regexp.timeoutConfiguré selon les exigences de l'application Ruby, le risque de DoS peut être prévenu ou considérablement réduit. Veuillez noter qu'il Regexp.timeouts'agit d'un élément de configuration global. Si vous souhaitez utiliser différents paramètres de délai d'attente pour certaines expressions régulières spéciales, vous devez utiliser des mots- timeoutclés Regexp.new.

Regexp.timeout = 1.0

# This regexp has no timeout
long_time_re = Regexp.new("^a*b?a*$", timeout: nil)

long_time_re =~ "a" * 50000 + "x" # never interrupted

Proposition originale pour cette fonctionnalité : https://bugs.ruby-lang.org/issues/17837

D'autres mises à jour incluent l'optimisation des performances, la mise à jour de la bibliothèque standard, etc. Pour plus de détails, consultez l'annonce de la version .

Je suppose que tu aimes

Origine www.oschina.net/news/189866/ruby-3-2-0-preview1-released
conseillé
Classement