summaryrefslogtreecommitdiffstats
path: root/lib/base.php
diff options
context:
space:
mode:
authorFrank Karlitschek <frank@owncloud.org>2012-06-05 12:52:23 +0200
committerFrank Karlitschek <frank@owncloud.org>2012-06-05 12:52:23 +0200
commite3031ae28be12b377f6a570f8048512b744d5951 (patch)
tree827cd05b1593a0e57caccde62625d728516caeee /lib/base.php
parent564b0358f91df832afdf3a0fd27eaa349508c964 (diff)
downloadnextcloud-server-e3031ae28be12b377f6a570f8048512b744d5951.tar.gz
nextcloud-server-e3031ae28be12b377f6a570f8048512b744d5951.zip
more reliable host detection for reverse proxy servers
Diffstat (limited to 'lib/base.php')
-rw-r--r--lib/base.php12
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/base.php b/lib/base.php
index bdfd05e8f1d..b9c28119e32 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -367,16 +367,18 @@ class OC{
// CSRF protection
if(isset($_SERVER['HTTP_REFERER'])) $referer=$_SERVER['HTTP_REFERER']; else $referer='';
- $protocol=OC_Helper::serverProtocol().'://';
+ $refererhost=parse_url($referer);
+ if(isset($refererhost['host'])) $refererhost=$refererhost['host']; else $refererhost='';
+ $server=OC_Helper::serverHost();
+ $serverhost=parse_url($server);
+ if(isset($serverhost['host'])) $serverhost=$serverhost['host']; else $serverhost='';
if(!self::$CLI){
- $server=$protocol.OC_Helper::serverHost();
- if(($_SERVER['REQUEST_METHOD']=='POST') and (substr($referer,0,strlen($server))<>$server)) {
- $url = $protocol.OC_Helper::serverProtocol().OC::$WEBROOT.'/index.php';
+ if(($_SERVER['REQUEST_METHOD']=='POST') and ($refererhost<>$serverhost)) {
+ $url = OC_Helper::serverProtocol().'://'.$server.OC::$WEBROOT.'/index.php';
header("Location: $url");
exit();
}
}
-
self::initSession();
self::initTemplateEngine();
self::checkUpgrade();