Spec-Zone.ru › Ruby 3.4

Инъекция команд

Некоторые базовые методы Ruby принимают строковые данные, содержащие текст для выполнения в качестве системной команды.

Их не следует вызывать с неизвестными или неочищенными командами.

К таким методам относятся:

  • Kernel.exec

  • Kernel.spawn

  • Kernel.system

  • `command` (метод обратного апострофа) (также вызывается выражением %x[command]).

  • IO.popen (если вызывается не с "-").

Некоторые методы выполняют системную команду только в том случае, если указанное имя пути начинается с |:

  • Kernel.open(command).

  • IO.read(command).

  • IO.write(command).

  • IO.binread(command).

  • IO.binwrite(command).

  • IO.readlines(command).

  • IO.foreach(command).

  • URI.open(command).

Обратите внимание, что некоторые из этих методов не выполняют команды при вызове из подкласса File:

  • File.read(path).

  • File.write(path).

  • File.binread(path).

  • File.binwrite(path).

  • File.readlines(path).

  • File.foreach(path).

Ruby Core © 1993–2025 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API