Packages

HTTP Security Headers for Phoenix or Plug

Current section

Files

Jump to
secure_headers lib headers x_frame_options.ex
Raw

lib/headers/x_frame_options.ex

defmodule SecureHeaders.XFrameOptions do
@valid_header ~r/\A(sameorigin\z|deny\z|allow-from[:\s])/i
@error_msg "Invalid configuration for x-frame-options"
def validate(options) when is_list(options) do
case Keyword.has_key?(options, :config) do
false -> {:ok, options}
true ->
case Keyword.has_key?(options[:config], :x_frame_options) do
# No http-public-key-pins configuration found - return options
false -> {:ok, options}
true ->
case validate_config(options[:config][:x_frame_options]) do
false -> {:error, @error_msg}
true -> {:ok, options}
end
end
end
end
def validate(_), do: {:error, @error_msg}
defp validate_config(x_frame_options) when x_frame_options |> is_bitstring do
Regex.match?( @valid_header, x_frame_options)
end
defp validate_config(x_frame_options) do
# unless config[:x_frame_options] value is nil or false
!x_frame_options
end
end