summaryrefslogtreecommitdiffstats
path: root/src/usr/local/www
diff options
context:
space:
mode:
authorRenato Botelho <renato@netgate.com>2017-04-10 15:04:40 -0300
committerRenato Botelho <renato@netgate.com>2017-04-10 15:07:40 -0300
commitf860a1ea8e836dd75f2a4012c1a773a4c75fc4ab (patch)
tree0b603c83c4d8da96a79d6efe5691e2862e4ae274 /src/usr/local/www
parent98ba645aebfe113f3265176ef24ef0e05dc3b3f4 (diff)
downloadpfsense-f860a1ea8e836dd75f2a4012c1a773a4c75fc4ab.zip
pfsense-f860a1ea8e836dd75f2a4012c1a773a4c75fc4ab.tar.gz
Update CSRF to latest version from github
Diffstat (limited to 'src/usr/local/www')
-rw-r--r--src/usr/local/www/csrf/csrf-magic.js16
-rw-r--r--src/usr/local/www/csrf/csrf-magic.php8
2 files changed, 14 insertions, 10 deletions
diff --git a/src/usr/local/www/csrf/csrf-magic.js b/src/usr/local/www/csrf/csrf-magic.js
index a889773..0989c10 100644
--- a/src/usr/local/www/csrf/csrf-magic.js
+++ b/src/usr/local/www/csrf/csrf-magic.js
@@ -40,13 +40,11 @@ CsrfMagic.prototype = {
send: function(data) {
if (!this.csrf_isPost) return this.csrf_send(data);
prepend = csrfMagicName + '=' + csrfMagicToken + '&';
-
- // Removed to eliminate 'Refused to set unsafe header "Content-length" ' errors in modern browsers
- // if (this.csrf_purportedLength === undefined) {
- // this.csrf_setRequestHeader("Content-length", this.csrf_purportedLength + prepend.length);
- // delete this.csrf_purportedLength;
- // }
-
+ // XXX: Removed to eliminate 'Refused to set unsafe header "Content-length" ' errors in modern browsers
+ // if (this.csrf_purportedLength === undefined) {
+ // this.csrf_setRequestHeader("Content-length", this.csrf_purportedLength + prepend.length);
+ // delete this.csrf_purportedLength;
+ // }
delete this.csrf_isPost;
return this.csrf_send(prepend + data);
},
@@ -89,6 +87,10 @@ CsrfMagic.prototype._updateProps = function() {
}
}
CsrfMagic.process = function(base) {
+ if(typeof base == 'object') {
+ base[csrfMagicName] = csrfMagicToken;
+ return base;
+ }
var prepend = csrfMagicName + '=' + csrfMagicToken;
if (base) return prepend + '&' + base;
return prepend;
diff --git a/src/usr/local/www/csrf/csrf-magic.php b/src/usr/local/www/csrf/csrf-magic.php
index 58f4eba..65db19f 100644
--- a/src/usr/local/www/csrf/csrf-magic.php
+++ b/src/usr/local/www/csrf/csrf-magic.php
@@ -217,7 +217,8 @@ function csrf_get_tokens() {
$secret = csrf_get_secret();
if (!$has_cookies && $secret) {
// :TODO: Harden this against proxy-spoofing attacks
- $ip = ';ip:' . csrf_hash($_SERVER['IP_ADDRESS']);
+ $IP_ADDRESS = (isset($_SERVER['IP_ADDRESS']) ? $_SERVER['IP_ADDRESS'] : $_SERVER['REMOTE_ADDR']);
+ $ip = ';ip:' . csrf_hash($IP_ADDRESS);
} else {
$ip = '';
}
@@ -327,7 +328,8 @@ function csrf_check_token($token) {
if ($GLOBALS['csrf']['user'] !== false) return false;
if (!empty($_COOKIE)) return false;
if (!$GLOBALS['csrf']['allow-ip']) return false;
- return $value === csrf_hash($_SERVER['IP_ADDRESS'], $time);
+ $IP_ADDRESS = (isset($_SERVER['IP_ADDRESS']) ? $_SERVER['IP_ADDRESS'] : $_SERVER['REMOTE_ADDR']);
+ return $value === csrf_hash($IP_ADDRESS, $time);
}
return false;
}
@@ -379,7 +381,7 @@ function csrf_get_secret() {
*/
function csrf_generate_secret($len = 32) {
$r = '';
- for ($i = 0; $i < 32; $i++) {
+ for ($i = 0; $i < $len; $i++) {
$r .= chr(mt_rand(0, 255));
}
$r .= time() . microtime();
OpenPOWER on IntegriCloud