sitios site forgery cross codigo attack and elixir csrf phoenix-framework csrf-protection

elixir - site - sitios csrf



Cómo deshabilitar selectivamente la comprobación de CSRF en el marco de Phoenix (1)

La Plug.CSRFProtection está habilitada en su enrutador con protect_from_forgery . Esto se establece de forma predeterminada en la canalización del browser . Una vez que se ha agregado un enchufe, no hay forma de desactivarlo, en su lugar no se debe configurar en primer lugar. Puede hacerlo moviéndolo fuera del browser y solo incluyéndolo cuando sea necesario.

defmodule Foo.Router do use Foo.Web, :router pipeline :browser do plug :accepts, ["html"] plug :fetch_session plug :fetch_flash #plug :protect_from_forgery - move this end pipeline :csrf do plug :protect_from_forgery # to here end pipeline :api do plug :accepts, ["json"] end scope "/", Foo do pipe_through [:browser, :csrf] # Use both browser and csrf pipelines get "/", PageController, :index end scope "/", Foo do pipe_through :browser # Use only the browser pipeline get "/facebook", PageController, :index #You can use the same controller and actions if you like end end

Estoy intentando crear una pestaña de página de Facebook que apunte a mi sitio web. Facebook envía una solicitud HTTP POST a la url de mi sitio web. El problema aquí es que el servidor tiene una comprobación CSRF integrada y devuelve el siguiente error:

(Plug.CSRFProtection.InvalidCSRFTokenError) invalid CSRF (Cross Site Forgery Protection) token, make sure all requests include a ''_csrf_token'' param or an ''x-csrf-token'' header`

El servidor espera un token CSRF que Facebook no puede tener. Por lo tanto, quiero desactivar selectivamente CSRF para la ruta www.mywebsite.com/facebook.

¿Cómo puedo hacerlo en Phoenix Framework?