form_authenticity_token niewiem do czego to
No i przypominal że zapytanie POST idzie z innego serwisu
kontroler
protect_from_forgery :except=>[:create]
def index
render :layout=>false
end
def create
if params[:email].nil?
@user=User.find(:first,:conditions=>{:email =>params[:email]})
@mail=@user.email
else
@mail=‘brak w bazie’
end
render :layout=false
end
a w widoku create
<%=h @mail %>
O to logi:
Processing mojController#create (for 192.168.2.6 at 2010-06-30 16:21:22) [POST]
Parameters: {“action”=>“create”, “id”=>“40770”, “controller”=>“moj”, “status”=>“2”, “email”=>“jakis@mail”}
Rendering tranzakcjas/create
Completed in 16ms (View: 4, DB: 1) | 200 OK [http://192.168.2.6/moj?status=2&id=4000&email=jakis%40mail]
Zwróć także uwagę, że protect_from_forgery chroni użytkowników Twojej aplikacji przed atakiem CSRF. Być może twoja akcja create, nie jest jakaś bardzo istotna i wyłączenie nie będzie czymś strasznym, ale zastanów się czy możesz sobie na to pozwolić
Mam gema, ktory udostepnia uzytkownikowi mozliwosc wysylania pewnych danych do aplikacji Railsowej. Dane wysylam za pomoc Net::HTTP::Post na odpowiedni controller z metoda create. W aplikacji mam to zrobione podobnie jak u drusslowa tzn. protect_from_forgery :except=>[:create]. Pytanie brzmi - czy aby na pewno jest to dobry sposob, a jezeli nie, to jak to inaczej rozwiazac?
Udostępniając API musisz się zabezpieczyć w inny sposób. Ataki CSRF są domeną przeglądarek, więc pierwszym krokiem jest właśnie wyłącznie poprzez protect_from_forgery, a kolejnym – autentykacja poprzez OAuth albo jakiś api_key.
Witam, w automagiczny sposób zaczeło działać gdzieś coś przeoczyłem , protect_from_forgery :except=> uzywam tylko w tym kontrolerze który posiada tylko jedną akcje, robie to z przymus bo potrzebuje odesłać potwierdzenie po odebraniu zapytania POST a niemam wpływu na to jak to przyjmuje ta druga strona a wiem że nieżyczy sobie mojego authenticity_token.