XssSecurity   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
dl 0
loc 29
ccs 0
cts 12
cp 0
rs 10
c 0
b 0
f 0
wmc 4
lcom 0
cbo 3

1 Method

Rating   Name   Duplication   Size   Complexity  
A handle() 0 26 4
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Longman\LaravelLodash\Middlewares;
6
7
use Closure;
8
use Illuminate\Http\Request;
9
10
use function strpos;
11
12
class XssSecurity
13
{
14
    public function handle(Request $request, Closure $next)
15
    {
16
        /** @var \Illuminate\Http\Response $response */
17
        $response = $next($request);
18
19
        $requestUri = $request->getUri();
20
        $excluded = config('lodash.xss.exclude_uris');
21
        if (! empty($excluded)) {
22
            foreach ($excluded as $uri) {
23
                if (strpos($requestUri, $uri) !== false) {
24
                    return $response;
25
                }
26
            }
27
        }
28
29
        /** @see http://blogs.msdn.com/b/ieinternals/archive/2010/03/30/combating-clickjacking-with-x-frame-options.aspx */
30
        $response->headers->set('X-Frame-Options', config('lodash.xss.x_frame_options'), true);
31
32
        /** @see http://msdn.microsoft.com/en-us/library/ie/gg622941(v=vs.85).aspx */
33
        $response->headers->set('X-Content-Type-Options', config('lodash.xss.x_content_type_options'), true);
34
35
        /** @see http://msdn.microsoft.com/en-us/library/dd565647(v=vs.85).aspx */
36
        $response->headers->set('X-XSS-Protection', config('lodash.xss.x_xss_protection'), true);
37
38
        return $response;
39
    }
40
}
41