File tree Expand file tree Collapse file tree 1 file changed +16
-1
lines changed
Expand file tree Collapse file tree 1 file changed +16
-1
lines changed Original file line number Diff line number Diff line change @@ -185,7 +185,7 @@ defmodule ErrorTrackerDev.Router do
185185 get "/exit" , ErrorTrackerDev.Controller , :exit
186186
187187 scope "/dev" do
188- error_tracker_dashboard "/errors"
188+ error_tracker_dashboard "/errors" , csp_nonce_assign_key: :custom_csp_nonce
189189 end
190190 end
191191end
@@ -203,8 +203,23 @@ defmodule ErrorTrackerDev.Endpoint do
203203 plug Phoenix.LiveReloader
204204 plug Phoenix.CodeReloader , reloader: & PhoenixPlayground.CodeReloader . reload / 2
205205
206+ # Use a custom Content Security Policy
207+ plug :set_csp
206208 # Our custom router which allows us to have regular controllers and live views
207209 plug ErrorTrackerDev.Router
210+
211+ defp set_csp ( conn , _opts ) do
212+ nonce = 10 |> :crypto . strong_rand_bytes ( ) |> Base . encode64 ( )
213+
214+ policies = [
215+ "script-src 'self' 'nonce-#{ nonce } ';" ,
216+ "style-src 'self' 'nonce-#{ nonce } ';"
217+ ]
218+
219+ conn
220+ |> Plug.Conn . assign ( :custom_csp_nonce , "#{ nonce } " )
221+ |> Plug.Conn . put_resp_header ( "content-security-policy" , Enum . join ( policies , " " ) )
222+ end
208223end
209224
210225defmodule ErrorTrackerDev.ErrorView do
You can’t perform that action at this time.
0 commit comments