fix(AppFramework): Allow requests with OCS-APIRequest header to pass CSRF checks

Signed-off-by: provokateurin <kate@provokateurin.de>
pull/46760/head
provokateurin 2 years ago
parent d5bb37ab0d
commit 9d1705259c
No known key found for this signature in database
  1. 4
      lib/private/AppFramework/Http/Request.php
  2. 20
      tests/lib/AppFramework/Http/RequestTest.php

@ -426,6 +426,10 @@ class Request implements \ArrayAccess, \Countable, IRequest {
return false;
}
if ($this->getHeader('OCS-APIRequest') !== '') {
return true;
}
if (isset($this->items['get']['requesttoken'])) {
$token = $this->items['get']['requesttoken'];
} elseif (isset($this->items['post']['requesttoken'])) {

@ -2256,4 +2256,24 @@ class RequestTest extends \Test\TestCase {
$this->assertFalse($request->passesCSRFCheck());
}
public function testPassesCSRFCheckWithOCSAPIRequestHeader() {
/** @var Request $request */
$request = $this->getMockBuilder('\OC\AppFramework\Http\Request')
->setMethods(['getScriptName'])
->setConstructorArgs([
[
'server' => [
'HTTP_OCS_APIREQUEST' => 'true',
],
],
$this->requestId,
$this->config,
$this->csrfTokenManager,
$this->stream
])
->getMock();
$this->assertTrue($request->passesCSRFCheck());
}
}

Loading…
Cancel
Save