Ruby on Register_globals

Łukasz Pilorz, 29 April 2007

Ten weekend poświęciłem na szybki kurs Ruby on Rails. Zacząłem od Rolling with Ruby on Rails Revisited, który w bardzo przyjazny czytelnikowi sposób wprowadza w tematykę RoR. Niestety w drugiej części tego artykułu zatrzymałem się na dłuższą chwilę w miejscu, gdzie w przykładzie zablokowana zostaje użytkownikowi możliwość edycji daty wpisu. Usuwany jest formularz oraz nadawana domyślna wartość daty, ale… nikt nie zabrania użytkownikowi przesłać daty spreparowanym formularzem, lub chociażby telnetem. Autor nie wspomniał o tym, że aby faktycznie zablokować możliwość wprowadzenia własnych danych, należałoby dodać linię “attr_protected :date” w odpowiednim modelu.

Jest to problem bardzo podobny do sytuacji, gdy przy włączonej dyrektywie register_globals programista PHP używa zmiennej nie inicjując wcześniej jej wartości. O tym, że w Ruby on Rails jest to równie typowy błąd, mogą świadczyć na przykład luki w LoginGenerator i LoginSugar.

Inny często spotykany problem to podatność na CSRF - ten temat został prawie pominięty w dostępnych materiałach.

Dla programistów RoR polecam:
Ruby on Rails Security Blog
Opis luki w Rails<1.1.6
Securing your Rails application
CSRF Killer plugin

Skomentuj