Tag: Rails

Logi systemowe w Rails a hasła i inne newralgiczne dane

Środowisko Rails przechowuje w logach wiele danych. M.in to co przesyłamy w żądaniach.

Problem pojawia się gdy przesyłamy login i hasło (np. podczas logowania lub rejestracji). Osoba która uzyska dostęp do logów, mogłaby z nich "wyciągnąć" te newralgiczne dane. Aby temu zapobiec, należy "przysłonić" wrzucanie do logów tych pól z formularzy które są niebezpieczne.

Aby to zrobić należy skorzystać z metody:

  filter_parameter_logging

Która po podaniu parametrów usunie je, zanim trafią do loga. Aby w całej naszej aplikacji przysłonić tworzenie logów zawierających hasła wystarczy w kontrolerze aplikacji (ApplicationController) dodać następująca linijkę:

  filter_parameter_logging :password

Dzięki temu, mając jakiekolwiek pola zawierające słowo password, ich zawartość zostanie zamieniona na [FILTERED]. Nie ma to znaczenia czy są w hashu zawierającym hasha:

params[:test][:deeper][:password]
params[:test][:deeper][:password_confirmation]

Czy też "na wierzchu":

params[:password]
params[:password_confirmation]

W każdym z tych przypadków, hasła nie zostaną zapisane w logach.

HTTP 406 Error Code i testowanie innych niż HTML typów mime

Tytułem wstępu zaznaczę, że wybrałem RFPDF zamiast PRAWNa tylko dlatego że migrowałem gotowe szablony z PHP do Railsów, więc miałem do zamiany aż: pdf-> na pdf..

Jak już wynika ze wstępu, generując PDFy, wypada je też przetestować.

Naturalnym byłoby zrobienie czegoś takiego:

get :show, :id => order.id, :format => :pdf
assert_response :success

Jednak wykonując to w ten sposób, dostaniemy HTTP 406 Error :) który tak na dobrą sprawę nic nie mówi.

Rozwiązanie tego problemu jest jednak banalne. Mimo że możemy robić trasy nazwane i podawać format jako symbol:

:format => :pdf

Okazuje się że w testach zrobić tego nie możemy. Jednak wystarczy zamienić symbol na tekst i wszystko będzie działać jak trzeba:

:format => "pdf"

Copyright © 2025 Closer to Code

Theme by Anders NorenUp ↑