diff --git a/airtime_mvc/application/common/CORSHelper.php b/airtime_mvc/application/common/CORSHelper.php index cf3f6d5ac..6febb0f1b 100644 --- a/airtime_mvc/application/common/CORSHelper.php +++ b/airtime_mvc/application/common/CORSHelper.php @@ -10,7 +10,7 @@ class CORSHelper //Chrome sends the Origin header for all requests, so we whitelist the webserver's hostname as well. $response = $response->setHeader('Access-Control-Allow-Origin', '*'); $origin = $request->getHeader('Origin'); - if (($origin != "") && + if ((!(preg_match("/https?:\/\/localhost/", $origin) === 1)) && ($origin != "") && (!in_array($origin, array("http://www.airtime.pro", "https://www.airtime.pro", diff --git a/airtime_mvc/application/modules/rest/controllers/MediaController.php b/airtime_mvc/application/modules/rest/controllers/MediaController.php index 1483de816..b6260a483 100644 --- a/airtime_mvc/application/modules/rest/controllers/MediaController.php +++ b/airtime_mvc/application/modules/rest/controllers/MediaController.php @@ -312,18 +312,21 @@ class Rest_MediaController extends Zend_Rest_Controller if($observed_csrf_token == $expected_csrf_token){ return true; }else{ - $resp = $this->getResponse(); - $resp->setHttpResponseCode(401); - $resp->appendBody("ERROR: Token Missmatch."); return false; } } - + private function verifyAuth($checkApiKey, $checkSession) { - //Session takes precedence over API key for now: - if ($checkSession && $this->verifySession()) - { + // Session takes precedence over API key for now: + if ($checkSession && $this->verifySession()) { + // CSRF token validation only applies to session based authorization. + if(!$this->verifyCSRFToken($this->_getParam('csrf_token'))){ + $resp = $this->getResponse(); + $resp->setHttpResponseCode(401); + $resp->appendBody("ERROR: Token Missmatch."); + return false; + } return true; } @@ -339,7 +342,6 @@ class Rest_MediaController extends Zend_Rest_Controller return false; } - private function verifyAPIKey() { //The API key is passed in via HTTP "basic authentication": diff --git a/airtime_mvc/public/js/airtime/library/plupload.js b/airtime_mvc/public/js/airtime/library/plupload.js index a361fe442..f96ee3157 100644 --- a/airtime_mvc/public/js/airtime/library/plupload.js +++ b/airtime_mvc/public/js/airtime/library/plupload.js @@ -89,7 +89,7 @@ $(document).ready(function() { $.ajax({ type: 'DELETE', - url: '/rest/media/' + file.id, + url: 'rest/media/' + file.id + "?csrf_token=" + $("#csrf").attr('value'), success: function(resp) { self.recentUploadsTable.fnDraw(); },