pub enum Hsts {
Enable(Duration),
IncludeSubDomains(Duration),
Preload(Duration),
}
Expand description
The HTTP Strict-Transport-Security (HSTS) header: enforces strict HTTPS usage.
HSTS tells the browser that the site should only be accessed using HTTPS
instead of HTTP. HSTS prevents a variety of downgrading attacks and should
always be used when TLS is enabled. Shield
will turn HSTS on and issue a
warning if you enable TLS without enabling HSTS when the application is run
in non-debug profiles.
While HSTS is important for HTTPS security, incorrectly configured HSTS can lead to problems as you are disallowing access to non-HTTPS enabled parts of your site. Yelp engineering has good discussion of potential challenges that can arise and how to roll this out in a large scale setting. So, if you use TLS, use HSTS, but roll it out with care.
Variants§
Enable(Duration)
Browser should only permit this site to be accesses by HTTPS for the
next Duration
.
IncludeSubDomains(Duration)
Like Hsts::Enable
, but also apply to all of the site’s subdomains.
Preload(Duration)
Send a “preload” HSTS header, which requests inclusion in the HSTS
preload list. This variant implies Hsts::IncludeSubDomains
, which
implies Hsts::Enable
.
The provided Duration
must be at least 365 days. If the duration
provided is less than 365 days, the header will be written out with a
max-age
of 365 days.
Details
Google maintains an HSTS preload service that can be used to prevent the browser from ever connecting to your site over an insecure connection. Read more at MDN. Don’t enable this before you have registered your site and you ensure that it meets the requirements specified by the preload service.
Trait Implementations§
source§impl PartialEq<Hsts> for Hsts
impl PartialEq<Hsts> for Hsts
impl Copy for Hsts
impl StructuralPartialEq for Hsts
Auto Trait Implementations§
impl RefUnwindSafe for Hsts
impl Send for Hsts
impl Sync for Hsts
impl Unpin for Hsts
impl UnwindSafe for Hsts
Blanket Implementations§
§impl<'a, T> AsTaggedExplicit<'a> for Twhere
T: 'a,
impl<'a, T> AsTaggedExplicit<'a> for Twhere T: 'a,
§impl<'a, T> AsTaggedImplicit<'a> for Twhere
T: 'a,
impl<'a, T> AsTaggedImplicit<'a> for Twhere T: 'a,
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> IntoCollection<T> for T
impl<T> IntoCollection<T> for T
§fn into_collection<A>(self) -> SmallVec<A>where
A: Array<Item = T>,
fn into_collection<A>(self) -> SmallVec<A>where A: Array<Item = T>,
self
into a collection.