summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2015-09-16 00:16:31 +0200
committerThomas Müller <thomas.mueller@tmit.eu>2015-09-16 00:16:31 +0200
commit2fc19635f6a98c0acbd223b3f9d0028ff2755585 (patch)
treed296d796ce1392900e477a45cc44a893bdae7ad5
parentd1f7087b6cf1f6c706f3a4f66cb0aa91bd5c28c1 (diff)
parent2f4a1c9c2c9777a2e225b433573f6473f3b9e0b1 (diff)
downloadnextcloud-server-2fc19635f6a98c0acbd223b3f9d0028ff2755585.tar.gz
nextcloud-server-2fc19635f6a98c0acbd223b3f9d0028ff2755585.zip
Merge pull request #19014 from owncloud/dont-add-requestheaders-for-cross-domain-requests
Add security hardenings to $.ajax()
-rw-r--r--core/js/js.js14
-rw-r--r--core/js/oc-requesttoken.js8
2 files changed, 19 insertions, 3 deletions
diff --git a/core/js/js.js b/core/js/js.js
index 8d3756ae2ec..de773dc1221 100644
--- a/core/js/js.js
+++ b/core/js/js.js
@@ -1215,6 +1215,20 @@ function object(o) {
* Initializes core
*/
function initCore() {
+ /**
+ * Disable automatic evaluation of responses for $.ajax() functions (and its
+ * higher-level alternatives like $.get() and $.post()).
+ *
+ * If a response to a $.ajax() request returns a content type of "application/javascript"
+ * JQuery would previously execute the response body. This is a pretty unexpected
+ * behaviour and can result in a bypass of our Content-Security-Policy as well as
+ * multiple unexpected XSS vectors.
+ */
+ $.ajaxSetup({
+ contents: {
+ script: false
+ }
+ });
/**
* Set users locale to moment.js as soon as possible
diff --git a/core/js/oc-requesttoken.js b/core/js/oc-requesttoken.js
index 2f7548ecb77..d5dcecdb5ab 100644
--- a/core/js/oc-requesttoken.js
+++ b/core/js/oc-requesttoken.js
@@ -1,4 +1,6 @@
-$(document).on('ajaxSend',function(elm, xhr) {
- xhr.setRequestHeader('requesttoken', oc_requesttoken);
- xhr.setRequestHeader('OCS-APIREQUEST', 'true');
+$(document).on('ajaxSend',function(elm, xhr, settings) {
+ if(settings.crossDomain === false) {
+ xhr.setRequestHeader('requesttoken', oc_requesttoken);
+ xhr.setRequestHeader('OCS-APIREQUEST', 'true');
+ }
});