Skip to content
This repository has been archived by the owner on May 7, 2021. It is now read-only.

Automatically apply security flags to all cookies with the ability to fine tune each cookie

License

Notifications You must be signed in to change notification settings

oreoshake/cookies_and_cream

Repository files navigation

Build Status Gem Version

CookiesAndCream

CookiesAndCream is an extract of the cookie functionality from secure_headers. Rails has good header support but the cookie support is still lacking. Maybe one day this functionality will be added to rails core.

Note: the railtie currently isn't working (see #1) so there's a bit of manual setup for now.

Gemfile:

gem "cookies_and_cream"

A railtie will automatically insert the middleware for rails applications.

Configuration

These can be defined in the form of a boolean, or as a Hash for more refined configuration.

Defaults

By default, all cookies will get both Secure, HttpOnly, and SameSite=Lax.

CookiesAndCream.config = {
  secure: true, # defaults to true but will be a no op on non-HTTPS requests
  httponly: true, # defaults to true
  samesite: {  # defaults to set `SameSite=Lax`
    lax: true
  }
}

Boolean-based configuration

Boolean-based configuration is intended to globally enable or disable a specific cookie attribute. Note: As of 4.0, you must use OPT_OUT rather than false to opt out of the defaults.

CookiesAndCream.config = {
  secure: true, # mark all cookies as Secure
  httponly: OPT_OUT, # do not mark any cookies as HttpOnly
}

Hash-based configuration

Hash-based configuration allows for fine-grained control.

CookiesAndCream.config = {
  secure: { except: ['_guest'] }, # mark all but the `_guest` cookie as Secure
  httponly: { only: ['_rails_session'] }, # only mark the `_rails_session` cookie as HttpOnly
}

SameSite cookie configuration

SameSite cookies permit either Strict or Lax enforcement mode options.

CookiesAndCream.config = {
  samesite: {
    strict: true # mark all cookies as SameSite=Strict
  }
}

Strict and Lax enforcement modes can also be specified using a Hash.

CookiesAndCream.config = {
  samesite: {
    strict: { only: ['_rails_session'] },
    lax: { only: ['_guest'] }
  }
}

About

Automatically apply security flags to all cookies with the ability to fine tune each cookie

Resources

License

Stars

Watchers

Forks

Packages

No packages published