Completed
Push — master ( 41f657...d3cb7c )
by Christopher
11s
created

ODataController::getAppPageSize()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 0
cts 0
cp 0
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
crap 2
1
<?php
2
3
namespace AlgoWeb\PODataLaravel\Controllers;
4
5
use AlgoWeb\PODataLaravel\Controllers\Controller as BaseController;
6
use AlgoWeb\PODataLaravel\Serialisers\IronicSerialiser;
7
use Carbon\Carbon;
8
use Illuminate\Http\Request;
9
use Illuminate\Http\Response;
10
use Illuminate\Support\Facades\App;
11
use Illuminate\Support\Facades\DB;
12
use Illuminate\Support\Facades\Storage;
13
use POData\OperationContext\ServiceHost as ServiceHost;
14
use POData\OperationContext\Web\Illuminate\IlluminateOperationContext as OperationContextAdapter;
15
use POData\SimpleDataService as DataService;
16
17
class ODataController extends BaseController
18
{
19
    /**
20
     * Display a listing of the resource.
21
     *
22
     * @return \Illuminate\Http\Response
23
     */
24
    public function index(Request $request)
25
    {
26
        $dump = $this->isDumping();
27
        $dryRun = $this->isDryRun();
28
        $commitCall = $dryRun ? 'rollBack' : 'commit';
29
30
        try {
31
            DB::beginTransaction();
32
            $context = new OperationContextAdapter($request);
33
            $host = new ServiceHost($context, $request);
34
            $host->setServiceUri('/odata.svc/');
35
36
            $query = App::make('odataquery');
37
            $meta = App::make('metadata');
38
39
            $service = new DataService($query, $meta, $host);
40
            $cereal = new IronicSerialiser($service, null);
41
            $service = new DataService($query, $meta, $host, $cereal);
42
            $pageSize = $this->getAppPageSize();
43
            if (null !== $pageSize) {
44
                $service->maxPageSize = intval($pageSize);
45
            }
46
            $service->handleRequest();
47
48
            $odataResponse = $context->outgoingResponse();
49
50
            if (true === $dump) {
51
                // iff XTest header is set, containing class and method name
52
                // dump outgoing odataResponse, metadata, and incoming request
53
                $xTest = $request->header('XTest');
54
                $date = Carbon::now(0);
55
                $timeString = $date->toTimeString();
56
                $xTest = (null !== $xTest) ? $xTest
57
                    : $request->method() . ';' . str_replace('/', '-', $request->path()) . ';' . $timeString . ';';
58
                if (null != $xTest) {
59
                    $reflectionClass = new \ReflectionClass('Illuminate\Http\Request');
60
                    $reflectionProperty = $reflectionClass->getProperty('userResolver');
61
                    $reflectionProperty->setAccessible(true);
62
                    $reflectionProperty->setValue($request, null);
63
                    $reflectionProperty = $reflectionClass->getProperty('routeResolver');
64
                    $reflectionProperty->setAccessible(true);
65
                    $reflectionProperty->setValue($request, null);
66
                    $cerealRequest = serialize($request);
67
                    $cerealMeta = serialize($meta);
68
                    $cerealResponse = serialize($odataResponse);
69
                    Storage::put($xTest . 'request', $cerealRequest);
70
                    Storage::put($xTest . 'metadata', $cerealMeta);
71
                    Storage::put($xTest . 'response', $cerealResponse);
72
                }
73
            }
74
75
            $content = $odataResponse->getStream();
76
77
            $headers = $odataResponse->getHeaders();
78
            $responseCode = $headers[\POData\Common\ODataConstants::HTTPRESPONSE_HEADER_STATUS_CODE];
79
            $responseCode = isset($responseCode) ? intval($responseCode) : 200;
80
            $response = new Response($content, $responseCode);
0 ignored issues
show
Security Cross-Site Scripting introduced by
$content can contain request data and is used in output context(s) leading to a potential security vulnerability.

10 paths for user data to reach this point

  1. Path: $this->parameters['HTTP_AUTHORIZATION'] seems to return tainted data, and $authorizationHeader is assigned in ServerBag.php on line 62
  1. $this->parameters['HTTP_AUTHORIZATION'] seems to return tainted data, and $authorizationHeader is assigned
    in vendor/ServerBag.php on line 62
  2. ParameterBag::$parameters is assigned
    in vendor/ServerBag.php on line 77
  3. Tainted property ParameterBag::$parameters is read
    in vendor/ParameterBag.php on line 45
  4. ParameterBag::all() returns tainted data, and $bag->all() is passed to TransformsRequest::cleanArray()
    in vendor/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php on line 58
  5. $data is passed to collect()
    in vendor/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php on line 69
  6. $value is passed to Collection::__construct()
    in vendor/src/Illuminate/Support/helpers.php on line 423
  7. Collection::$items is assigned
    in vendor/src/Illuminate/Support/Collection.php on line 47
  8. Iterating property Collection::$items, and $entry is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 281
  9. QueryResult::$results is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 284
  10. Tainted property QueryResult::$results is read, and $result is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 415
  11. $result is passed to CynicSerialiser::writeBagValue()
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 421
  12. $value is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 540
  13. Data is passed through utf8_encode()
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 978
  14. ODataBagContent::$propertyContents is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 545
  15. Tainted property ODataBagContent::$propertyContents is read, and $content is assigned
    in vendor/src/POData/Writers/Json/JsonLightODataWriter.php on line 290
  16. $content is passed to JsonWriter::writeValue()
    in vendor/src/POData/Writers/Json/JsonLightODataWriter.php on line 299
  17. $value is passed to JsonWriter::writeCore()
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 124
  18. $text is passed to IndentedTextWriter::writeValue()
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 217
  19. $value is passed to IndentedTextWriter::write()
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 59
  20. IndentedTextWriter::$result is assigned
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 143
  21. Tainted property IndentedTextWriter::$result is read
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 122
  22. IndentedTextWriter::getResult() returns tainted data
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 258
  23. JsonWriter::getJsonOutput() returns tainted data
    in vendor/src/POData/Writers/Json/JsonODataV1Writer.php on line 431
  24. JsonODataV1Writer::serializeException() returns tainted data, and $responseBody is assigned
    in vendor/src/POData/Common/ErrorHandler.php on line 62
  25. $responseBody is passed to OutgoingResponse::setStream()
    in vendor/src/POData/Common/ErrorHandler.php on line 65
  26. OutgoingResponse::$stream is assigned
    in vendor/src/POData/OperationContext/Web/OutgoingResponse.php on line 200
  27. Tainted property OutgoingResponse::$stream is read
    in vendor/src/POData/OperationContext/Web/OutgoingResponse.php on line 190
  28. OutgoingResponse::getStream() returns tainted data, and $content is assigned
    in src/Controllers/ODataController.php on line 75
  2. Path: Read from $_POST, and $_POST is passed to Request::createRequestFromFactory() in Request.php on line 317
  1. Read from $_POST, and $_POST is passed to Request::createRequestFromFactory()
    in vendor/Request.php on line 317
  2. $request is passed to Request::__construct()
    in vendor/Request.php on line 2052
  3. $request is passed to Request::initialize()
    in vendor/Request.php on line 258
  4. $request is passed to ParameterBag::__construct()
    in vendor/Request.php on line 276
  5. ParameterBag::$parameters is assigned
    in vendor/ParameterBag.php on line 35
  6. Tainted property ParameterBag::$parameters is read
    in vendor/ParameterBag.php on line 45
  7. ParameterBag::all() returns tainted data, and $bag->all() is passed to TransformsRequest::cleanArray()
    in vendor/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php on line 58
  8. $data is passed to collect()
    in vendor/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php on line 69
  9. $value is passed to Collection::__construct()
    in vendor/src/Illuminate/Support/helpers.php on line 423
  10. Collection::$items is assigned
    in vendor/src/Illuminate/Support/Collection.php on line 47
  11. Iterating property Collection::$items, and $entry is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 281
  12. QueryResult::$results is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 284
  13. Tainted property QueryResult::$results is read, and $result is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 415
  14. $result is passed to CynicSerialiser::writeBagValue()
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 421
  15. $value is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 540
  16. Data is passed through utf8_encode()
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 978
  17. ODataBagContent::$propertyContents is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 545
  18. Tainted property ODataBagContent::$propertyContents is read, and $content is assigned
    in vendor/src/POData/Writers/Json/JsonLightODataWriter.php on line 290
  19. $content is passed to JsonWriter::writeValue()
    in vendor/src/POData/Writers/Json/JsonLightODataWriter.php on line 299
  20. $value is passed to JsonWriter::writeCore()
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 124
  21. $text is passed to IndentedTextWriter::writeValue()
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 217
  22. $value is passed to IndentedTextWriter::write()
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 59
  23. IndentedTextWriter::$result is assigned
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 143
  24. Tainted property IndentedTextWriter::$result is read
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 122
  25. IndentedTextWriter::getResult() returns tainted data
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 258
  26. JsonWriter::getJsonOutput() returns tainted data
    in vendor/src/POData/Writers/Json/JsonODataV1Writer.php on line 431
  27. JsonODataV1Writer::serializeException() returns tainted data, and $responseBody is assigned
    in vendor/src/POData/Common/ErrorHandler.php on line 62
  28. $responseBody is passed to OutgoingResponse::setStream()
    in vendor/src/POData/Common/ErrorHandler.php on line 65
  29. OutgoingResponse::$stream is assigned
    in vendor/src/POData/OperationContext/Web/OutgoingResponse.php on line 200
  30. Tainted property OutgoingResponse::$stream is read
    in vendor/src/POData/OperationContext/Web/OutgoingResponse.php on line 190
  31. OutgoingResponse::getStream() returns tainted data, and $content is assigned
    in src/Controllers/ODataController.php on line 75
  3. Path: Read from $_SERVER, and $server is assigned in Request.php on line 307
  1. Read from $_SERVER, and $server is assigned
    in vendor/Request.php on line 307
  2. $server is passed to Request::createRequestFromFactory()
    in vendor/Request.php on line 317
  3. $server is passed to Request::__construct()
    in vendor/Request.php on line 2052
  4. $server is passed to Request::initialize()
    in vendor/Request.php on line 258
  5. $server is passed to ParameterBag::__construct()
    in vendor/Request.php on line 281
  6. ParameterBag::$parameters is assigned
    in vendor/ParameterBag.php on line 35
  7. Tainted property ParameterBag::$parameters is read
    in vendor/ParameterBag.php on line 45
  8. ParameterBag::all() returns tainted data, and $bag->all() is passed to TransformsRequest::cleanArray()
    in vendor/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php on line 58
  9. $data is passed to collect()
    in vendor/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php on line 69
  10. $value is passed to Collection::__construct()
    in vendor/src/Illuminate/Support/helpers.php on line 423
  11. Collection::$items is assigned
    in vendor/src/Illuminate/Support/Collection.php on line 47
  12. Iterating property Collection::$items, and $entry is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 281
  13. QueryResult::$results is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 284
  14. Tainted property QueryResult::$results is read, and $result is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 415
  15. $result is passed to CynicSerialiser::writeBagValue()
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 421
  16. $value is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 540
  17. Data is passed through utf8_encode()
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 978
  18. ODataBagContent::$propertyContents is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 545
  19. Tainted property ODataBagContent::$propertyContents is read, and $content is assigned
    in vendor/src/POData/Writers/Json/JsonLightODataWriter.php on line 290
  20. $content is passed to JsonWriter::writeValue()
    in vendor/src/POData/Writers/Json/JsonLightODataWriter.php on line 299
  21. $value is passed to JsonWriter::writeCore()
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 124
  22. $text is passed to IndentedTextWriter::writeValue()
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 217
  23. $value is passed to IndentedTextWriter::write()
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 59
  24. IndentedTextWriter::$result is assigned
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 143
  25. Tainted property IndentedTextWriter::$result is read
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 122
  26. IndentedTextWriter::getResult() returns tainted data
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 258
  27. JsonWriter::getJsonOutput() returns tainted data
    in vendor/src/POData/Writers/Json/JsonODataV1Writer.php on line 431
  28. JsonODataV1Writer::serializeException() returns tainted data, and $responseBody is assigned
    in vendor/src/POData/Common/ErrorHandler.php on line 62
  29. $responseBody is passed to OutgoingResponse::setStream()
    in vendor/src/POData/Common/ErrorHandler.php on line 65
  30. OutgoingResponse::$stream is assigned
    in vendor/src/POData/OperationContext/Web/OutgoingResponse.php on line 200
  31. Tainted property OutgoingResponse::$stream is read
    in vendor/src/POData/OperationContext/Web/OutgoingResponse.php on line 190
  32. OutgoingResponse::getStream() returns tainted data, and $content is assigned
    in src/Controllers/ODataController.php on line 75
  4. Path: Fetching key HTTP_CONTENT_LENGTH from $_SERVER, and $server is assigned in Request.php on line 310
  1. Fetching key HTTP_CONTENT_LENGTH from $_SERVER, and $server is assigned
    in vendor/Request.php on line 310
  2. $server is passed to Request::createRequestFromFactory()
    in vendor/Request.php on line 317
  3. $server is passed to Request::__construct()
    in vendor/Request.php on line 2052
  4. $server is passed to Request::initialize()
    in vendor/Request.php on line 258
  5. $server is passed to ParameterBag::__construct()
    in vendor/Request.php on line 281
  6. ParameterBag::$parameters is assigned
    in vendor/ParameterBag.php on line 35
  7. Tainted property ParameterBag::$parameters is read
    in vendor/ParameterBag.php on line 45
  8. ParameterBag::all() returns tainted data, and $bag->all() is passed to TransformsRequest::cleanArray()
    in vendor/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php on line 58
  9. $data is passed to collect()
    in vendor/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php on line 69
  10. $value is passed to Collection::__construct()
    in vendor/src/Illuminate/Support/helpers.php on line 423
  11. Collection::$items is assigned
    in vendor/src/Illuminate/Support/Collection.php on line 47
  12. Iterating property Collection::$items, and $entry is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 281
  13. QueryResult::$results is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 284
  14. Tainted property QueryResult::$results is read, and $result is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 415
  15. $result is passed to CynicSerialiser::writeBagValue()
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 421
  16. $value is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 540
  17. Data is passed through utf8_encode()
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 978
  18. ODataBagContent::$propertyContents is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 545
  19. Tainted property ODataBagContent::$propertyContents is read, and $content is assigned
    in vendor/src/POData/Writers/Json/JsonLightODataWriter.php on line 290
  20. $content is passed to JsonWriter::writeValue()
    in vendor/src/POData/Writers/Json/JsonLightODataWriter.php on line 299
  21. $value is passed to JsonWriter::writeCore()
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 124
  22. $text is passed to IndentedTextWriter::writeValue()
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 217
  23. $value is passed to IndentedTextWriter::write()
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 59
  24. IndentedTextWriter::$result is assigned
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 143
  25. Tainted property IndentedTextWriter::$result is read
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 122
  26. IndentedTextWriter::getResult() returns tainted data
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 258
  27. JsonWriter::getJsonOutput() returns tainted data
    in vendor/src/POData/Writers/Json/JsonODataV1Writer.php on line 431
  28. JsonODataV1Writer::serializeException() returns tainted data, and $responseBody is assigned
    in vendor/src/POData/Common/ErrorHandler.php on line 62
  29. $responseBody is passed to OutgoingResponse::setStream()
    in vendor/src/POData/Common/ErrorHandler.php on line 65
  30. OutgoingResponse::$stream is assigned
    in vendor/src/POData/OperationContext/Web/OutgoingResponse.php on line 200
  31. Tainted property OutgoingResponse::$stream is read
    in vendor/src/POData/OperationContext/Web/OutgoingResponse.php on line 190
  32. OutgoingResponse::getStream() returns tainted data, and $content is assigned
    in src/Controllers/ODataController.php on line 75
  5. Path: Fetching key HTTP_CONTENT_TYPE from $_SERVER, and $server is assigned in Request.php on line 313
  1. Fetching key HTTP_CONTENT_TYPE from $_SERVER, and $server is assigned
    in vendor/Request.php on line 313
  2. $server is passed to Request::createRequestFromFactory()
    in vendor/Request.php on line 317
  3. $server is passed to Request::__construct()
    in vendor/Request.php on line 2052
  4. $server is passed to Request::initialize()
    in vendor/Request.php on line 258
  5. $server is passed to ParameterBag::__construct()
    in vendor/Request.php on line 281
  6. ParameterBag::$parameters is assigned
    in vendor/ParameterBag.php on line 35
  7. Tainted property ParameterBag::$parameters is read
    in vendor/ParameterBag.php on line 45
  8. ParameterBag::all() returns tainted data, and $bag->all() is passed to TransformsRequest::cleanArray()
    in vendor/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php on line 58
  9. $data is passed to collect()
    in vendor/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php on line 69
  10. $value is passed to Collection::__construct()
    in vendor/src/Illuminate/Support/helpers.php on line 423
  11. Collection::$items is assigned
    in vendor/src/Illuminate/Support/Collection.php on line 47
  12. Iterating property Collection::$items, and $entry is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 281
  13. QueryResult::$results is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 284
  14. Tainted property QueryResult::$results is read, and $result is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 415
  15. $result is passed to CynicSerialiser::writeBagValue()
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 421
  16. $value is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 540
  17. Data is passed through utf8_encode()
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 978
  18. ODataBagContent::$propertyContents is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 545
  19. Tainted property ODataBagContent::$propertyContents is read, and $content is assigned
    in vendor/src/POData/Writers/Json/JsonLightODataWriter.php on line 290
  20. $content is passed to JsonWriter::writeValue()
    in vendor/src/POData/Writers/Json/JsonLightODataWriter.php on line 299
  21. $value is passed to JsonWriter::writeCore()
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 124
  22. $text is passed to IndentedTextWriter::writeValue()
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 217
  23. $value is passed to IndentedTextWriter::write()
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 59
  24. IndentedTextWriter::$result is assigned
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 143
  25. Tainted property IndentedTextWriter::$result is read
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 122
  26. IndentedTextWriter::getResult() returns tainted data
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 258
  27. JsonWriter::getJsonOutput() returns tainted data
    in vendor/src/POData/Writers/Json/JsonODataV1Writer.php on line 431
  28. JsonODataV1Writer::serializeException() returns tainted data, and $responseBody is assigned
    in vendor/src/POData/Common/ErrorHandler.php on line 62
  29. $responseBody is passed to OutgoingResponse::setStream()
    in vendor/src/POData/Common/ErrorHandler.php on line 65
  30. OutgoingResponse::$stream is assigned
    in vendor/src/POData/OperationContext/Web/OutgoingResponse.php on line 200
  31. Tainted property OutgoingResponse::$stream is read
    in vendor/src/POData/OperationContext/Web/OutgoingResponse.php on line 190
  32. OutgoingResponse::getStream() returns tainted data, and $content is assigned
    in src/Controllers/ODataController.php on line 75
  6. Path: $server['HTTP_HOST'] seems to return tainted data, and $server is assigned in Request.php on line 383
  1. $server['HTTP_HOST'] seems to return tainted data, and $server is assigned
    in vendor/Request.php on line 383
  2. $server is assigned
    in vendor/Request.php on line 431
  3. $server is assigned
    in vendor/Request.php on line 432
  4. $server is passed to Request::createRequestFromFactory()
    in vendor/Request.php on line 434
  5. $server is passed to Request::__construct()
    in vendor/Request.php on line 2052
  6. $server is passed to Request::initialize()
    in vendor/Request.php on line 258
  7. $server is passed to ParameterBag::__construct()
    in vendor/Request.php on line 281
  8. ParameterBag::$parameters is assigned
    in vendor/ParameterBag.php on line 35
  9. Tainted property ParameterBag::$parameters is read
    in vendor/ParameterBag.php on line 45
  10. ParameterBag::all() returns tainted data, and $bag->all() is passed to TransformsRequest::cleanArray()
    in vendor/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php on line 58
  11. $data is passed to collect()
    in vendor/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php on line 69
  12. $value is passed to Collection::__construct()
    in vendor/src/Illuminate/Support/helpers.php on line 423
  13. Collection::$items is assigned
    in vendor/src/Illuminate/Support/Collection.php on line 47
  14. Iterating property Collection::$items, and $entry is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 281
  15. QueryResult::$results is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 284
  16. Tainted property QueryResult::$results is read, and $result is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 415
  17. $result is passed to CynicSerialiser::writeBagValue()
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 421
  18. $value is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 540
  19. Data is passed through utf8_encode()
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 978
  20. ODataBagContent::$propertyContents is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 545
  21. Tainted property ODataBagContent::$propertyContents is read, and $content is assigned
    in vendor/src/POData/Writers/Json/JsonLightODataWriter.php on line 290
  22. $content is passed to JsonWriter::writeValue()
    in vendor/src/POData/Writers/Json/JsonLightODataWriter.php on line 299
  23. $value is passed to JsonWriter::writeCore()
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 124
  24. $text is passed to IndentedTextWriter::writeValue()
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 217
  25. $value is passed to IndentedTextWriter::write()
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 59
  26. IndentedTextWriter::$result is assigned
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 143
  27. Tainted property IndentedTextWriter::$result is read
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 122
  28. IndentedTextWriter::getResult() returns tainted data
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 258
  29. JsonWriter::getJsonOutput() returns tainted data
    in vendor/src/POData/Writers/Json/JsonODataV1Writer.php on line 431
  30. JsonODataV1Writer::serializeException() returns tainted data, and $responseBody is assigned
    in vendor/src/POData/Common/ErrorHandler.php on line 62
  31. $responseBody is passed to OutgoingResponse::setStream()
    in vendor/src/POData/Common/ErrorHandler.php on line 65
  32. OutgoingResponse::$stream is assigned
    in vendor/src/POData/OperationContext/Web/OutgoingResponse.php on line 200
  33. Tainted property OutgoingResponse::$stream is read
    in vendor/src/POData/OperationContext/Web/OutgoingResponse.php on line 190
  34. OutgoingResponse::getStream() returns tainted data, and $content is assigned
    in src/Controllers/ODataController.php on line 75
  7. Path: $this->parameters['PHP_AUTH_USER'] seems to return tainted data, and $headers is assigned in ServerBag.php on line 43
  1. $this->parameters['PHP_AUTH_USER'] seems to return tainted data, and $headers is assigned
    in vendor/ServerBag.php on line 43
  2. $headers is assigned
    in vendor/ServerBag.php on line 44
  3. ServerBag::getHeaders() returns tainted data, and $this->server->getHeaders() is passed to HeaderBag::__construct()
    in vendor/Request.php on line 282
  4. $values is assigned
    in vendor/HeaderBag.php on line 31
  5. $values is passed to HeaderBag::set()
    in vendor/HeaderBag.php on line 32
  6. (array) $values is passed through array_values(), and $values is assigned
    in vendor/HeaderBag.php on line 143
  7. HeaderBag::$headers is assigned
    in vendor/HeaderBag.php on line 146
  8. Tainted property HeaderBag::$headers is read
    in vendor/HeaderBag.php on line 67
  9. HeaderBag::all() returns tainted data, and $headers is assigned
    in vendor/HeaderBag.php on line 115
  10. HeaderBag::get() returns tainted data, and $requestUri is assigned
    in vendor/Request.php on line 1822
  11. $requestUri is passed to ParameterBag::set()
    in vendor/Request.php on line 1853
  12. ParameterBag::$parameters is assigned
    in vendor/ParameterBag.php on line 99
  13. Tainted property ParameterBag::$parameters is read
    in vendor/ParameterBag.php on line 45
  14. ParameterBag::all() returns tainted data, and $bag->all() is passed to TransformsRequest::cleanArray()
    in vendor/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php on line 58
  15. $data is passed to collect()
    in vendor/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php on line 69
  16. $value is passed to Collection::__construct()
    in vendor/src/Illuminate/Support/helpers.php on line 423
  17. Collection::$items is assigned
    in vendor/src/Illuminate/Support/Collection.php on line 47
  18. Iterating property Collection::$items, and $entry is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 281
  19. QueryResult::$results is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 284
  20. Tainted property QueryResult::$results is read, and $result is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 415
  21. $result is passed to CynicSerialiser::writeBagValue()
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 421
  22. $value is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 540
  23. Data is passed through utf8_encode()
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 978
  24. ODataBagContent::$propertyContents is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 545
  25. Tainted property ODataBagContent::$propertyContents is read, and $content is assigned
    in vendor/src/POData/Writers/Json/JsonLightODataWriter.php on line 290
  26. $content is passed to JsonWriter::writeValue()
    in vendor/src/POData/Writers/Json/JsonLightODataWriter.php on line 299
  27. $value is passed to JsonWriter::writeCore()
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 124
  28. $text is passed to IndentedTextWriter::writeValue()
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 217
  29. $value is passed to IndentedTextWriter::write()
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 59
  30. IndentedTextWriter::$result is assigned
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 143
  31. Tainted property IndentedTextWriter::$result is read
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 122
  32. IndentedTextWriter::getResult() returns tainted data
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 258
  33. JsonWriter::getJsonOutput() returns tainted data
    in vendor/src/POData/Writers/Json/JsonODataV1Writer.php on line 431
  34. JsonODataV1Writer::serializeException() returns tainted data, and $responseBody is assigned
    in vendor/src/POData/Common/ErrorHandler.php on line 62
  35. $responseBody is passed to OutgoingResponse::setStream()
    in vendor/src/POData/Common/ErrorHandler.php on line 65
  36. OutgoingResponse::$stream is assigned
    in vendor/src/POData/OperationContext/Web/OutgoingResponse.php on line 200
  37. Tainted property OutgoingResponse::$stream is read
    in vendor/src/POData/OperationContext/Web/OutgoingResponse.php on line 190
  38. OutgoingResponse::getStream() returns tainted data, and $content is assigned
    in src/Controllers/ODataController.php on line 75
  8. Path: $this->parameters['PHP_AUTH_PW'] seems to return tainted data, and $headers is assigned in ServerBag.php on line 44
  1. $this->parameters['PHP_AUTH_PW'] seems to return tainted data, and $headers is assigned
    in vendor/ServerBag.php on line 44
  2. ServerBag::getHeaders() returns tainted data, and $this->server->getHeaders() is passed to HeaderBag::__construct()
    in vendor/Request.php on line 282
  3. $values is assigned
    in vendor/HeaderBag.php on line 31
  4. $values is passed to HeaderBag::set()
    in vendor/HeaderBag.php on line 32
  5. (array) $values is passed through array_values(), and $values is assigned
    in vendor/HeaderBag.php on line 143
  6. HeaderBag::$headers is assigned
    in vendor/HeaderBag.php on line 146
  7. Tainted property HeaderBag::$headers is read
    in vendor/HeaderBag.php on line 67
  8. HeaderBag::all() returns tainted data, and $headers is assigned
    in vendor/HeaderBag.php on line 115
  9. HeaderBag::get() returns tainted data, and $requestUri is assigned
    in vendor/Request.php on line 1822
  10. $requestUri is passed to ParameterBag::set()
    in vendor/Request.php on line 1853
  11. ParameterBag::$parameters is assigned
    in vendor/ParameterBag.php on line 99
  12. Tainted property ParameterBag::$parameters is read
    in vendor/ParameterBag.php on line 45
  13. ParameterBag::all() returns tainted data, and $bag->all() is passed to TransformsRequest::cleanArray()
    in vendor/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php on line 58
  14. $data is passed to collect()
    in vendor/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php on line 69
  15. $value is passed to Collection::__construct()
    in vendor/src/Illuminate/Support/helpers.php on line 423
  16. Collection::$items is assigned
    in vendor/src/Illuminate/Support/Collection.php on line 47
  17. Iterating property Collection::$items, and $entry is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 281
  18. QueryResult::$results is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 284
  19. Tainted property QueryResult::$results is read, and $result is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 415
  20. $result is passed to CynicSerialiser::writeBagValue()
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 421
  21. $value is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 540
  22. Data is passed through utf8_encode()
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 978
  23. ODataBagContent::$propertyContents is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 545
  24. Tainted property ODataBagContent::$propertyContents is read, and $content is assigned
    in vendor/src/POData/Writers/Json/JsonLightODataWriter.php on line 290
  25. $content is passed to JsonWriter::writeValue()
    in vendor/src/POData/Writers/Json/JsonLightODataWriter.php on line 299
  26. $value is passed to JsonWriter::writeCore()
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 124
  27. $text is passed to IndentedTextWriter::writeValue()
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 217
  28. $value is passed to IndentedTextWriter::write()
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 59
  29. IndentedTextWriter::$result is assigned
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 143
  30. Tainted property IndentedTextWriter::$result is read
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 122
  31. IndentedTextWriter::getResult() returns tainted data
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 258
  32. JsonWriter::getJsonOutput() returns tainted data
    in vendor/src/POData/Writers/Json/JsonODataV1Writer.php on line 431
  33. JsonODataV1Writer::serializeException() returns tainted data, and $responseBody is assigned
    in vendor/src/POData/Common/ErrorHandler.php on line 62
  34. $responseBody is passed to OutgoingResponse::setStream()
    in vendor/src/POData/Common/ErrorHandler.php on line 65
  35. OutgoingResponse::$stream is assigned
    in vendor/src/POData/OperationContext/Web/OutgoingResponse.php on line 200
  36. Tainted property OutgoingResponse::$stream is read
    in vendor/src/POData/OperationContext/Web/OutgoingResponse.php on line 190
  37. OutgoingResponse::getStream() returns tainted data, and $content is assigned
    in src/Controllers/ODataController.php on line 75
  9. Path: Read from $_SERVER, and $server is assigned in src/Illuminate/Foundation/Bootstrap/SetRequestForConsole.php on line 22
  1. Read from $_SERVER, and $server is assigned
    in vendor/src/Illuminate/Foundation/Bootstrap/SetRequestForConsole.php on line 22
  2. Data is passed through array_replace()
    in vendor/Request.php on line 360
  3. Data is passed through call_user_func()
    in vendor/Request.php on line 2043
  4. \Illuminate\Http\Request::create($uri, 'GET', array(), array(), array(), $server) is passed to Container::instance()
    in vendor/src/Illuminate/Foundation/Bootstrap/SetRequestForConsole.php on line 31
  5. Container::$instances is assigned
    in vendor/src/Illuminate/Container/Container.php on line 394
  6. Tainted property Container::$instances is read
    in vendor/src/Illuminate/Container/Container.php on line 635
  7. Container::resolve() returns tainted data
    in vendor/src/Illuminate/Container/Container.php on line 601
  8. Container::make() returns tainted data
    in vendor/src/Illuminate/Container/Container.php on line 1210
  9. Container::offsetGet() returns tainted data, and $table is assigned
    in vendor/src/Illuminate/Session/SessionManager.php on line 74
  10. $table is passed to DatabaseSessionHandler::__construct()
    in vendor/src/Illuminate/Session/SessionManager.php on line 79
  11. DatabaseSessionHandler::$table is assigned
    in vendor/src/Illuminate/Session/DatabaseSessionHandler.php on line 64
  12. Tainted property DatabaseSessionHandler::$table is read, and $this->table is passed to Connection::table()
    in vendor/src/Illuminate/Session/DatabaseSessionHandler.php on line 277
  13. $table is passed to Builder::from()
    in vendor/src/Illuminate/Database/Connection.php on line 265
  14. Builder::$from is assigned
    in vendor/src/Illuminate/Database/Query/Builder.php on line 327
  15. Tainted property Builder::$from is read, and $query->from is passed to Grammar::wrapTable()
    in vendor/src/Illuminate/Database/Query/Grammars/Grammar.php on line 772
  16. $this->tablePrefix . $table is passed to Grammar::wrap()
    in vendor/src/Illuminate/Database/Grammar.php on line 36
  17. $value is passed through explode(), and explode('.', $value) is passed to Grammar::wrapSegments()
    in vendor/src/Illuminate/Database/Grammar.php on line 62
  18. $segments is passed to collect()
    in vendor/src/Illuminate/Database/Grammar.php on line 96
  19. $value is passed to Collection::__construct()
    in vendor/src/Illuminate/Support/helpers.php on line 423
  20. Collection::$items is assigned
    in vendor/src/Illuminate/Support/Collection.php on line 47
  21. Iterating property Collection::$items, and $entry is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 281
  22. QueryResult::$results is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 284
  23. Tainted property QueryResult::$results is read, and $result is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 415
  24. $result is passed to CynicSerialiser::writeBagValue()
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 421
  25. $value is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 540
  26. Data is passed through utf8_encode()
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 978
  27. ODataBagContent::$propertyContents is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 545
  28. Tainted property ODataBagContent::$propertyContents is read, and $content is assigned
    in vendor/src/POData/Writers/Json/JsonLightODataWriter.php on line 290
  29. $content is passed to JsonWriter::writeValue()
    in vendor/src/POData/Writers/Json/JsonLightODataWriter.php on line 299
  30. $value is passed to JsonWriter::writeCore()
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 124
  31. $text is passed to IndentedTextWriter::writeValue()
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 217
  32. $value is passed to IndentedTextWriter::write()
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 59
  33. IndentedTextWriter::$result is assigned
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 143
  34. Tainted property IndentedTextWriter::$result is read
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 122
  35. IndentedTextWriter::getResult() returns tainted data
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 258
  36. JsonWriter::getJsonOutput() returns tainted data
    in vendor/src/POData/Writers/Json/JsonODataV1Writer.php on line 431
  37. JsonODataV1Writer::serializeException() returns tainted data, and $responseBody is assigned
    in vendor/src/POData/Common/ErrorHandler.php on line 62
  38. $responseBody is passed to OutgoingResponse::setStream()
    in vendor/src/POData/Common/ErrorHandler.php on line 65
  39. OutgoingResponse::$stream is assigned
    in vendor/src/POData/OperationContext/Web/OutgoingResponse.php on line 200
  40. Tainted property OutgoingResponse::$stream is read
    in vendor/src/POData/OperationContext/Web/OutgoingResponse.php on line 190
  41. OutgoingResponse::getStream() returns tainted data, and $content is assigned
    in src/Controllers/ODataController.php on line 75
  10. Path: Fetching key HTTP_HOST from $_SERVER in src/POData/OperationContext/SimpleRequestAdapter.php on line 23
  1. Fetching key HTTP_HOST from $_SERVER
    in vendor/src/POData/OperationContext/SimpleRequestAdapter.php on line 23
  2. SimpleRequestAdapter::getRawUrl() returns tainted data, and ServiceHost::$absoluteRequestUriAsString is assigned
    in vendor/src/POData/OperationContext/ServiceHost.php on line 120
  3. Tainted property ServiceHost::$absoluteRequestUriAsString is read, and $this->absoluteRequestUriAsString is passed to Url::__construct()
    in vendor/src/POData/OperationContext/ServiceHost.php on line 123
  4. Url::$urlAsString is assigned
    in vendor/src/POData/Common/Url.php on line 53
  5. Tainted property Url::$urlAsString is read
    in vendor/src/POData/Common/Url.php on line 63
  6. Url::getUrlAsString() returns tainted data, and CynicSerialiser::$absoluteServiceUri is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 498
  7. Tainted property CynicSerialiser::$absoluteServiceUri is read, and $this->absoluteServiceUri is passed through rtrim(), and ODataURL::$url is assigned
    in vendor/src/POData/ObjectModel/CynicSerialiser.php on line 327
  8. Tainted property ODataURL::$url is read, and $url->url is passed to JsonWriter::writeValue()
    in vendor/src/POData/Writers/Json/JsonODataV1Writer.php on line 105
  9. $value is passed to JsonWriter::writeCore()
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 124
  10. $text is passed to IndentedTextWriter::writeValue()
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 217
  11. $value is passed to IndentedTextWriter::write()
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 59
  12. IndentedTextWriter::$result is assigned
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 143
  13. Tainted property IndentedTextWriter::$result is read
    in vendor/src/POData/Writers/Json/IndentedTextWriter.php on line 122
  14. IndentedTextWriter::getResult() returns tainted data
    in vendor/src/POData/Writers/Json/JsonWriter.php on line 258
  15. JsonWriter::getJsonOutput() returns tainted data
    in vendor/src/POData/Writers/Json/JsonODataV1Writer.php on line 431
  16. JsonODataV1Writer::serializeException() returns tainted data, and $responseBody is assigned
    in vendor/src/POData/Common/ErrorHandler.php on line 62
  17. $responseBody is passed to OutgoingResponse::setStream()
    in vendor/src/POData/Common/ErrorHandler.php on line 65
  18. OutgoingResponse::$stream is assigned
    in vendor/src/POData/OperationContext/Web/OutgoingResponse.php on line 200
  19. Tainted property OutgoingResponse::$stream is read
    in vendor/src/POData/OperationContext/Web/OutgoingResponse.php on line 190
  20. OutgoingResponse::getStream() returns tainted data, and $content is assigned
    in src/Controllers/ODataController.php on line 75

Used in output context

  1. Response::__construct() uses Response::setContent() ($content)
    in vendor/Response.php on line 201
  2. Response::setContent() uses property Response::$content for writing
    in vendor/Response.php on line 402
  3. Property Response::$content is used in echo
    in vendor/Response.php on line 361

Preventing Cross-Site-Scripting Attacks

Cross-Site-Scripting allows an attacker to inject malicious code into your website - in particular Javascript code, and have that code executed with the privileges of a visiting user. This can be used to obtain data, or perform actions on behalf of that visiting user.

In order to prevent this, make sure to escape all user-provided data:

// for HTML
$sanitized = htmlentities($tainted, ENT_QUOTES);

// for URLs
$sanitized = urlencode($tainted);

General Strategies to prevent injection

In general, it is advisable to prevent any user-data to reach this point. This can be done by white-listing certain values:

if ( ! in_array($value, array('this-is-allowed', 'and-this-too'), true)) {
    throw new \InvalidArgumentException('This input is not allowed.');
}

For numeric data, we recommend to explicitly cast the data:

$sanitized = (integer) $tainted;
Loading history...
81
            $response->setStatusCode($headers['Status']);
82
83
            foreach ($headers as $headerName => $headerValue) {
84
                if (null !== $headerValue) {
85
                    $response->headers->set($headerName, $headerValue);
86
                }
87
            }
88
            DB::$commitCall();
89
        } catch (\Exception $e) {
90
            DB::rollBack();
91
            throw $e;
92
        }
93
        return $response;
94
    }
95
96
    /**
97
     * @return bool
98
     */
99
    protected function isDumping()
100
    {
101
        $configDump = env('APP_DUMP_REQUESTS', false);
102
        return true === $configDump;
103
    }
104
105
    /**
106
     * Is application dry-running (ie, not committing) non-READ requests?
107
     *
108
     * @return bool
109
     */
110
    protected function isDryRun()
111
    {
112
        $configDump = env('APP_DRY_RUN', false);
113
        return true === $configDump;
114
    }
115
116
    /**
117
     * @return mixed
118
     */
119
    protected function getAppPageSize()
120
    {
121
        return env('APP_PAGE_SIZE', null);
122
    }
123
}
124