OpenURI в руби это стандартная библиотека сильно упрощающая работу с URL так как она объеденяет в себе Net:HTTP/HTTPS/FTP и представляет из себя всего лишь метод open. Насколько я знаю это самый популярный способ для скачивания файла, GET запроса или чтения данных.
Но на деле require "open-uri"
патчит Kernel.open и вызывает разный код для разных аргументов, что может привести к удаленному выполнению кода или чтению любого файла на сервере!
open(params[:url])
это выполнение кода для url=|ls
Все что начинается с | рассматривается как системный вызов.
open(params[:url]) if params[:url] =~ /^http://
не лучше для url=|touch n;nhttp://url.com
(сломанные регулярки могут привести к RCE, используйте Az).
Читать полностью »