strict-transport-security
, (*1)
Enable HTTP Strict Transport Security using HTTP Middleware, (*2)
L4 / L5
Middleware is available for both Laravel 4 and 5., (*3)
Install
Via Composer, (*4)
``` bash
$ composer require zae/strict-transport-security, (*5)
## Usage
### Laravel 5
Add the class `Zae\StrictTransportSecurity\Middleware\L5\StrictTransportSecurity` to the `$middlewares` array.
``` php
#app/Http/Kernel.php
protected $middleware = [
'Illuminate\View\Middleware\ShareErrorsFromSession',
'Zae\StrictTransportSecurity\Middleware\L5\StrictTransportSecurity',
];
It's not strictly required to use the middleware but if you want to use the vendor:publish command add the service provider Zae\StrictTransportSecurity\ServiceProvider\L5HTSTServiceProvider to the providers array in the app config.
``` php, (*6)
config/app.php
return [
'providers' => [
Illuminate\View\ViewServiceProvider::class,, (*7)
Zae\StrictTransportSecurity\ServiceProvider\L5HTSTServiceProvider::class,
],
];, (*8)
Publish the config with `php artisan vendor:publish`. This file will be created at `config/hsts.php`.
### Laravel 4
Add the serviceprovider to the list of service providers: `Zae\StrictTransportSecurity\ServiceProvider\L4HTSTServiceProvider`
``` php
#app/config.php
'providers' => array(
'Illuminate\Foundation\Providers\ArtisanServiceProvider',
'Illuminate\Auth\AuthServiceProvider',
'Zae\StrictTransportSecurity\ServiceProvider\L4HTSTServiceProvider',
),
Silex Example
``` php
require DIR . '/../vendor/autoload.php';, (*9)
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;, (*10)
$app = new Silex\Application();, (*11)
$app->get('/', function(Request $request) {
return new Response('Hello world!', 200);
});, (*12)
$app = (new Stack\Builder())
->push('Zae\StrictTransportSecurity\Middleware\L4\StrictTransportSecurity', [new \Zae\StrictTransportSecurity\HSTS(new Illuminate\Config\Repository())])
->resolve($app)
;, (*13)
$request = Request::createFromGlobals();
$response = $app->handle($request)->send();, (*14)
$app->terminate($request, $response);, (*15)
### Symfony Example
``` php
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Debug\Debug;
$loader = require_once __DIR__.'/../app/bootstrap.php.cache';
Debug::enable();
require_once __DIR__.'/../app/AppKernel.php';
$kernel = new AppKernel('dev', true);
$kernel->loadClassCache();
$app = (new Stack\Builder())
->push('Zae\StrictTransportSecurity\Middleware\L4\StrictTransportSecurity', [new \Zae\StrictTransportSecurity\HSTS(new Illuminate\Config\Repository())])
->resolve($app)
;
$kernel = $stack->resolve($kernel);
Request::enableHttpMethodParameterOverride();
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);
Testing
bash
$ phpunit, (*16)
Contributing
Contributions are welcome via pull requests on github., (*17)
Credits
License
The MIT License (MIT). Please see License File for more information., (*18)