LINUX.ORG.RU

Исправление уязвимостей в Ruby on Rails

 , ,


1

3

Встречайте новые исправления критических уязвимостей в фреймворке Ruby on Rails.
Была выпущена новая порция обновлений популярного фреймворка – 3.2.12, 3.1.11 и 2.3.17.

Всем пользователям Ruby on Rails рекомендуется как можно скорее обновить свои системы.

Подробнее об уязвимостях:

Список изменений в версиях:

  • 3.2.12
    • закрыта уязвимость в attr_protected
  • 3.1.11
    • закрыта уязвимость в attr_protected и YAML
  • 2.3.17
    • закрыта уязвимость в attr_protected и YAML

Также вышло обновление для гема JSON, закрывающее уязвимость CVE-2013-0269 ...

>>> Подробности

★★★★★

Проверено: maxcom ()
Последнее исправление: shahid (всего исправлений: 5)

Ответ на: комментарий от provaton

Это скриптовый ЯП, что не предназначен, особо то, для приложений.
Но для примера, по крайней мере немного раньше (сейчас не знаю, не проверял и лень), гитхаб почти весь на рубинах работает(-ал).

Spirit_of_Stallman ★★★
()
Ответ на: комментарий от pacify

Мешает то, что это не быдлокод?

Собственно, еще раз. Вполне нормально, что если ты ни черта не знаешь язык, тебе лень почитать про него, и ты ни черта не соображаешь, но показаться умным хочется - ты называешь это магией и быдлокодом. Но конкретные проблемы, конкретную магию и почему это плохо - ты привести не можешь.

И замечу, что аппеляция к monkey patch - совсем не аргумент, так как процент использования этого приема невероятно низок.

Вместо дискуссии - Ruby -> магия -> быдлокод -> почему?, лучше бы конкретно написал, какие методы и приемы Ruby хуже, привел бы аналоги решения более лучшие.

anonymous
()
Ответ на: комментарий от anonymous

и почему это плохо - ты привести не можешь.

Нет, конечно. Я этим (ФП) не занимаюсь. Соответственно, ты тоже в 90% процентов случаев не затрудняешься каким-либо объяснением, оскорбляя собеседников словами, не имеющими чёткого определения. Виталик Луговский таким же путём шёл, и наконец - капитулировал, убежав в Великобританию. Как говорится, «не плюй в колодец ...» ©

pacify ★★★★★
()

Решето, чтд

anonymous
()
Ответ на: комментарий от Spirit_of_Stallman

Ruby не Rails.

А зачем к каждой новости о рельсах звать тех, кто просто на ruby подписан?

Поддерживаю. Ruby не Rails.

Camel ★★★★★
()
Ответ на: комментарий от pacify

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

По поводу магии - просто почитайте Metaprogramming Ruby, если вы действительно хотите понять - что это такое в Ruby. Это далеко не monkey patch, mixins - это далеко не зло, и не нечто невообразимое.

В большинстве случаев, это API, который используя хорошо скрытые внутренние механизмы интепретатора и языка, использовать для расширения программы на Ruby, вплоть до автоматической генерации кода (блоки, динамическое объявление методов).

Если учесть, что в Ruby все объекты - в том числе, это и исполняемый блок, и лямбда, и метод, и класс, и модуль - то вся магия сводится к манипуляции с этими объектами. Ничего сверхестественного.

Я и в Python встречал, когда классы объявлялись с наследованием от класса, который возвращался функцией.

Декораторы в Python - тоже в своем роде механизм изменения кода.

Я встречал много примеров очень качественного кода на Python, где для моделей использовались классы Mixin, а в Ruby эта функция встроенна в язык, с возможностью выполнения кода по событию включения в другой класс или модуль, но не более, так как это производится все теми же понятными механизмами языка.

В хорошем Ruby коде, «магии» ровно столько, сколько надо. Если программист, сам по себе плох, и пишет для двух однострочных методов цикл с define_method, то это уже его проблемы, и его косяк. Но это не магия.

Просто надо быть толлерантнее, а не страдать расовой ненавистью к другим языкам.

anonymous
()
Ответ на: комментарий от anonymous

Использование приемов метапрограммирования на Ruby в нужном месте, в нужном объеме и с понимаем, что это надо - позволяет писать качественный, краткий и легко поддерживаемый код.

Также это касается написание библиотек, где может быть реализован DSL, что является не плохим решением, так как на Ruby DSL - это все тот же, хорошо читаемый код на Ruby.

anonymous
()
Ответ на: комментарий от pacify

По ним не знаю, на них не пишу, как и говорил ранее.

Про Clojure думаю, можно Алекса Отта почитать. Он на нем machine learning алгоритмами занимается. http://alexott.net/ru/index.html

anonymous
()
Ответ на: комментарий от anonymous

Что, гуглить теперь не модно?

Тот же js, его одногодка, по этому показателю он не менее достоин роли «первооткрывателя», а уж по распространенности я вообще молчу. Понятно, что и тот и другой первооткрыватели именно в кавычках.

видимо кроме monkey patch'а ты ни о чем и не слышал

Я много чего слышал. Я даже слышал, как называют тех, кто считает использование таких сомнительных техник не вынужденной мерой, а чем-то очень-очень хорошим и достойным подражения.

linuxnewb
()
Ответ на: комментарий от Deleted

как ФП решает вопросы сокрытия данных? ФП ни разу не противоположность ООП. Также определение ФП я ещё нигде не видел.

anonymous
()
Ответ на: комментарий от anonymous

Весь язык сравнил с програмкой на другом языке. Молодец :}

Deleted
()
Ответ на: комментарий от anonymous

А причем тут Python? Мы же про фреймворк говорим ...

renya ★★★★★
() автор топика
Ответ на: комментарий от linuxnewb

Ну давай не будем мешать горячее с холодным. JS - это прототипное наследование. Оно минималистично, и с ним немного можно сделать, кроме прямых манипуляций с прототипами, при попытках не погрязнуть в этом.

В Ruby же, ООП придерживается классической модели, с использованием возможностей метапрограммирования, и динамического языка.

При том, что это языки одногодки, это очень разные языки. При этом Ruby превосходило своего собрата на голову даже в те времена.

Я даже слышал, как называют тех, кто считает использование таких сомнительных техник не вынужденной мерой, а чем-то очень-очень хорошим и достойным подражения.

Представь себе, я тоже. Опять таки, о чем я и говорил, что у тебя в голове Ruby == monkey patch, хотя на самом деле, это не так. Помимо того, что программисты на Ruby, стараются не использовать этот подход без надобности крайней, язык старается сократить ущерб от этих методик.

А так манкипатчить можно в любом языке, и тут вопрос к программистам, пишущим плохой код, а не к языку как таковому.

anonymous
()
Ответ на: комментарий от anonymous

определение ФП

Последовательное применение функций для изменения состояния (и преобразования) объекта (группы объектов). Т.о., на мой взгляд, в ФП объект хранит состояние, но не методику работы с собой, т.е. объект не имеет типа - основы основ ООП. Т.о. ФП противопоставляется ООП, но динамические языки программирования стирают (давно стерли) грань.

special-k ★★★
()
Последнее исправление: special-k (всего исправлений: 1)
Ответ на: комментарий от special-k

Ты понял, что только что написал?

в ФП объект хранит состояние

Судя по твоим взглядам, ты вообще не вкуриваешь в тему, о которой рассуждаешь.

anonymous
()
Ответ на: комментарий от special-k

Конечно похожи, в том, что в обоих используется английский алфавит и есть арифметические операции. На сем сходства оканчиваются. Можешь опровергнуть?

anonymous
()
Ответ на: комментарий от anonymous

Путон тоже решето. Только Perl

anonymous
()
Ответ на: комментарий от special-k

Вот мне все таки интересно. Ты вот в школе уравнения решал? Ты о переменных в математике, тоже думал как о объектах, которые хранят состояние? Или ты еще в школе не доучился до уравнений в математике?

А про ООП в Haskell(классическое), Erlang(аля Алан Кей), OCaml ты ничего не слышал?

anonymous
()

Нужно еще больше уязвимостей для голодных мышек!

Siado ★★★★★
()
Ответ на: комментарий от special-k

То есть, для тебя нет различия между тем, что в JS не существует вообще понятия класс, а в Ruby не существует понятия прототип? Для тебя не существует различия в том, что в Ruby - все объект, а в JS - это довольно спорное утверждение, и при всех равных, там абсолютно разная иерархия классов (точнее у JS ее вообще нет).

Я не удивлюсь, если сейчас сбежится половина ЛОРа и будут с тебя лулзы ловить. Ты порой такое пишешь, что читать стыдно, не то, что отвечать на это.

anonymous
()
Ответ на: комментарий от special-k

оследовательное применение функций для изменения состояния (и преобразования) объекта (группы объектов).

ну как то? ты (или не ты?) же сказал что нужно вычеркнуть ООП => вычеркнут объекты. а тут мы их меняем.

на мой взгляд, в ФП объект хранит состояние

точно ФП?

объект не имеет типа - основы основ ООП

я уверен что ты ошибся.

динамические языки программирования стирают

я думаю ты совсем не знаком с ООП, ФП, динамическими языками. иначем бы не писал такую чушь. В качестве средств к излечению я предлагаю тебе прочитать след. книги. 1. Книга дракона. 2. Типы и языки программирования (TaPL)

anonymous
()
Ответ на: комментарий от Spirit_of_Stallman

гитхаб почти весь на рубинах работает(-ал).

Гитхаб разве не на рейлсе написан?

provaton ★★★★★
()
Ответ на: комментарий от anonymous

это непонимание языка и его языковых конструкций сторонним человеком

Дело не в языковых конструкциях, а в том, что с помощью этих конструкций написан постоянно ломающийся быдлокод. Конструкции не виноваты.

provaton ★★★★★
()
Ответ на: комментарий от anonymous

Всё бы в нем хорошо, только если бы не пакостный синтаксис, который делает гуляние по граблям непозволительно простым. Было бы в Питоне побольше Руби...

anonymous
()
Ответ на: комментарий от anonymous

Это не первая тема в которой он так раскрывается... и, боюсь, не последняя.

anonymous
()
Ответ на: комментарий от anonymous

Друг Анон, я бы посоветовал ему не книжки читать, а в универ сходить поучиться.

To special-k, на твоем месте, я бы прислушался к совету Анона, и сходил бы правда книги почитал, и вкурил бы тематику. Ведь оно самое, измышления, что JS быстрый, и фанатизм вокруг динамических языков, без понимания, что это такое - это плохой признак. Надо не на ЛОРе вечерами торчать, а учиться - если конечно, ты не хочешь, чтобы на собеседовании в нормальную фирму на тебя не смотрели, как на опустим кого.

anonymous
()
Ответ на: комментарий от anonymous

Ruby не существует понятия прототип

Класс похож на совокупность конструктора и прототипа в js.

в JS - это довольно спорное утверждение
иерархия классов (точнее у JS ее вообще нет).

Учи матчасть нубас)

special-k ★★★
()
Ответ на: комментарий от anonymous

хорошо пусть в универ сходит.

anonymous
()
Ответ на: комментарий от anonymous

нужно вычеркнуть ООП

ты гонишь чел.

ты совсем не знаком с ООП, ФП, динамическими языками

Ну приведи свое Ъопределние, начитанный ты наш)

special-k ★★★
()
Ответ на: комментарий от provaton

Я вот все не могу понять, откуда у тебя столько зависти к рубистам и Rails-разработчикам? Ты на pylons и pyramid с такой же ядовитой слюной кидаешься?

anonymous
()
Ответ на: комментарий от special-k

ты гонишь чел.

нет не гоню, я же сказал кто-то выше по тексту сказал что ооп нужно забыть. то что ты ответил, я не виноват.

Ну приведи свое Ъопределние, начитанный ты наш)

там же я написал, что я не встречал понятия ФП, поэтому его попросил. Очевидно, если бы я знал я бы написал.

anonymous
()
Ответ на: комментарий от special-k

Я нуб :D Ну ооооок.

Ты у нас не нуб, ты точно должен знать, какой общий класс-предок у целого числа, функции, объекта и строки в Javascript. Там же есть иерархия классов.

Класс похож на совокупность конструктора и прототипа в js.

Я тебе секрет открою, прототип в JavaScript, это не более чем хэш-таблица, и объекты в JavaScript это тоже хэш-таблицы. Никакого сходства с устройством классов в Ruby.

«Классы» в JS гораздо больше похожи на классы в Python, но не в Ruby. Но ты же не учишь матчасть.

anonymous
()
Ответ на: комментарий от provaton

Я прекрасно понял, и почему ты тут так высказываешься. Я вполне понимаю, что на Rails лучшие сейчас зарплаты, больший мейнстрим, и развивается он лучше, и уязвимости активно ищут и закрывают, чего не скажешь о Django.

Но зачем же, в новости про уязвимость, называть код core team Rails называть вечноломающимся быдлокодом? Эти ребята куда как более образованы, и перспективнее, чем мы с вами. Они это как минимум доказали. Так что, может не стоит так вот прямо «быдлокод ».

anonymous
()
Ответ на: комментарий от anonymous

Я бы вообще сказал, что нет никакого ООП и ФП, а есть языковые конструкции, и некую совокупность конструкций (маркетологами) принято как-то называть. Но как уже многими отмечалось, никто не запретит на чем угодно придерживаться какой угодно парадигмы.

special-k ★★★
()
Ответ на: комментарий от special-k

Может быть мне и хотелось бы поговорить об этом, но практикующие программисты редко говорят о какой-либо философии программирования, к сожалению.

special-k ★★★
()
Ответ на: комментарий от anonymous

называть код core team Rails называть вечноломающимся быдлокодом?

Извини, но эвал невалидированных данных от юзера - это быдлокод, какими бы красивыми словами это бы не оправдывалось. Причем не первая же уязвимость такая, то есть достаточно системное явление.

Я работал программистом на рейлсе, в целом очень неплохой продукт, есть вещи, которых в питоновском мире мне не хватает. Но по некоторым причинам решил не развивать это направление.

provaton ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.