Skip to content

Commit acd83aa

Browse files
committed
Use custom CSP nonce
1 parent db720f9 commit acd83aa

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

dev.exs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff 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
191191
end
@@ -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
208223
end
209224

210225
defmodule ErrorTrackerDev.ErrorView do

0 commit comments

Comments
 (0)