Sep 13 2008

Dlaczego warto przejść na Rails 2.1?

Category: Ruby, Ruby on Railsadmin @ 9:33 am

Pora przejść na Ruby On Rails 2.1. We wcześniejszych wersjach odkryto dziurę umożliwiającą SQL Injection. Bug występuje przy parametrze :offset.

Przy użyciu bazy MySqlowej otrzymujemy ActiveRecord::StatementInvalid exceptions z uwagi na domyślne wyłączenie wielokrotnych zapytań przez API. Natomiast przy innych bazach np: PostreSQL lub SQLite niestety może dojść do wstrzyknięcia kodu. Przy zapytaniu

 Item.find(:all, :limit=>10, :offset=>params[:offset]

i podaniu jako parametr :offset ciągu: “‘; Drop table items; ” następuje usunięcie tabeli items.

Jeśli koniecznie nie chcemy robić na razie uaktualnienia, a mamy podobne zapytania u siebie najprościej jest rzutować to co podajemy do :offset na Integer (to_i) lub zainstalować odpowiedniech patcha do wersji <2.0 lub do wersji 2.0

.

To, że mysql domyślnie nie pozwala na wielokrotne zapytania z poziomu api na pierwszy rzut oka nie wygląda najlepiej, jednak w tym przypadku chroni to aplikacje przed dużymi problemami.


Sep 07 2008

Kohanaphp - nie polecam

Category: php, kohanaadmin @ 3:21 pm

Ostatnio z powodów niezależnych od siebie musiałem pogrzebać w aplikacji napisanej w php. Serwis, który miałem poprawić został zbudowany na bazie kohanaphp. Kiedyś byłem całkiem zadowolony z używania CodeIgnitera, wiec miałem nadzieję, że i tym razem będzie podobnie. Kohana jest właśnie następcą CodeIgnitera, tylko z użyciem wszystkich dobrodziejstw php5.

I właśnie tutaj dobre wrażenia się skończyły. Wszystko niby podobne do railsów, niby też ORM, niby widoki, kontrolery, jednak różnica jest znaczna. Pewnie przyzwyczaiłem sie już do jakość kodowania jaką dają Railsy, ale nie zmienia to faktu, że kohana jest dość oporna.

Pierwsze minusy jakie odczułem *

  • Szablon - nie wiadomo co się renderuje, nie ma domyślnego pliku w który w ciemno można patrzyć. Za każdym razem trzeba sprawdzać w kontrolerze, jaki to plik szablonu używamy
  • Zmienne z kontrolera nie są widoczne w widoku, trzeba je w jawny sposób do niego przekazać. **
  • Słaba konfiguracja adresów url. Nie udało mi się ich tak skonfigurować abym mógł uzyskać efekt: domena.pl/tytul-aktualnosci. Granica możliwości, które wycinałem było domena.pl/tytul-aktualnosci/aktualnosci. W Railsach oczywiście jest to możliwe.
  • Brak generatorów kodu, podobno frameworki phpowe już mają, jednak w kohanie się nie doszukałem

* Niekompletne dokumentacja od początku mnie odrzuciła. Możliwe, że opisane poniżej kwestie są juz rozwiązane tylko jeszcze nie opisane w dokumentacji.

** nie jest tak źle jak w CodeIgniterze, że zmienne przekazuje się w tablicy razem poleceniem renderowania widoku. Tutaj można zmienne dokładać w miare poczeb podczas metody. Jednak po pierwsze zwiększa to ilość pisanego niepotrzebnie kodu, a po drugie zmusza do zastanawiania się co będzie potrzebne a co nie. Możliwe, że zwiększa to wydajność aplikacji, bo programisty na pewno nie.

Podsumowanie

Pierwsze wrażenia są raczej negatywne, jednak pracowałem z narzędziem zaledwie 2 dni, być może dla phpowców to duży krok do przodu, dla tych co posmakowali Railsów to raczej mocno odgrzewane danie.