Make WordPress Core

Ticket #28520: 28520.dff

File 28520.dff, 1.3 KB (added by tollmanz, 12 years ago)

Initial implementation of HSTS headers

Line 
1Index: src/wp-includes/functions.php
2===================================================================
3--- src/wp-includes/functions.php       (revision 28749)
4+++ src/wp-includes/functions.php       (working copy)
5@@ -1018,6 +1018,43 @@
6 }
7 
8 /**
9+ * Get the headers for HSTS.
10+ *
11+ * This function depends on the constant, ENABLE_HSTS, to be set to the value of
12+ * max-age component of the header. Setting to true will set the HSTS value for
13+ * 1 year. Setting as integer will set to that value. If set to 0, it will turn
14+ * off HSTS.
15+ *
16+ * @since 4.0.0
17+ * @return array The associative array of header information to enforce HSTS.
18+ */
19+function get_hsts_headers() {
20+       $headers = array();
21+
22+       if ( defined( 'ENABLE_HSTS' ) && ( is_int( ENABLE_HSTS ) || true === ENABLE_HSTS ) ) {
23+               $max_age = ( true === ENABLE_HSTS ) ? 31536000 : absint( ENABLE_HSTS );
24+               $headers = array(
25+                       'Strict-Transport-Security' => 'max-age=' . $max_age,
26+               );
27+       }
28+
29+       return apply_filters( 'hsts_headers', $headers );
30+}
31+
32+/**
33+ * Set HSTS headers.
34+ *
35+ * @since 4.0.0
36+ */
37+function hsts_headers() {
38+       $headers = get_hsts_headers();
39+
40+       foreach ( $headers as $header => $value ) {
41+               header( $header . ': ' . $value );
42+       }
43+}
44+
45+/**
46  * Set the headers for caching for 10 days with JavaScript content type.
47  *
48  * @since 2.1.0