Merge pull request #428 from poanetwork/ws-csp-#414
Dynamically add websocket endpoint to CSPpull/436/head
commit
0d8cc39bd2
@ -0,0 +1,28 @@ |
|||||||
|
defmodule ExplorerWeb.CSPHeader do |
||||||
|
@moduledoc """ |
||||||
|
Plug to set content-security-policy with websocket endpoints |
||||||
|
""" |
||||||
|
|
||||||
|
alias Phoenix.Controller |
||||||
|
alias Plug.Conn |
||||||
|
|
||||||
|
def init(opts), do: opts |
||||||
|
|
||||||
|
def call(conn, _opts) do |
||||||
|
Controller.put_secure_browser_headers(conn, %{ |
||||||
|
"content-security-policy" => "\ |
||||||
|
connect-src 'self' #{websocket_endpoints(conn)}; \ |
||||||
|
default-src 'self';\ |
||||||
|
script-src 'self' 'unsafe-inline' 'unsafe-eval';\ |
||||||
|
style-src 'self' 'unsafe-inline' 'unsafe-eval' https://fonts.googleapis.com;\ |
||||||
|
img-src 'self' 'unsafe-inline' 'unsafe-eval' data:;\ |
||||||
|
font-src 'self' 'unsafe-inline' 'unsafe-eval' https://fonts.gstatic.com data:;\ |
||||||
|
" |
||||||
|
}) |
||||||
|
end |
||||||
|
|
||||||
|
defp websocket_endpoints(conn) do |
||||||
|
host = Conn.get_req_header(conn, "host") |
||||||
|
"ws://#{host} wss://#{host}" |
||||||
|
end |
||||||
|
end |
Loading…
Reference in new issue