Skip to content

Commit

Permalink
Fix potential XSS vulnerability (#307)
Browse files Browse the repository at this point in the history
* Escape text coming from URL that is used in the page
* Comment out the contents of unit.html
* Prevent remote scripts being executed
* Remove remote URLs from unit test file
  • Loading branch information
bryanforbes committed Aug 10, 2018
1 parent 27509ee commit 9117ffd
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 39 deletions.
34 changes: 1 addition & 33 deletions testsDOH/_base/i18nExhaustive.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,6 @@ define([
"sync,,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built/i18nTest,amd",
"sync,,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built-with-layers/i18nTest,amd",
"sync,,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built-with-layers-and-preloads/i18nTest,amd",
"sync,,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,src,./i18n-test,amd",
"sync,,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,built,./built-i18n-test/built/i18nTest,amd",
"sync,,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,built,./built-i18n-test/built-with-layers/i18nTest,amd",
"sync,,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,built,./built-i18n-test/built-with-layers-and-preloads/i18nTest,amd",

"sync,ab,src,./dojo,src,./i18n-test,legacy",
"sync,ab,src,./dojo,legacy-built,./built-i18n-test/152-build,legacy",
Expand All @@ -31,10 +27,6 @@ define([
"sync,ab,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built/i18nTest,amd",
"sync,ab,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built-with-layers/i18nTest,amd",
"sync,ab,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built-with-layers-and-preloads/i18nTest,amd",
"sync,ab,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,src,./i18n-test,amd",
"sync,ab,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,built,./built-i18n-test/built/i18nTest,amd",
"sync,ab,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,built,./built-i18n-test/built-with-layers/i18nTest,amd",
"sync,ab,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,built,./built-i18n-test/built-with-layers-and-preloads/i18nTest,amd",

"sync,ab-cd,src,./dojo,src,./i18n-test,legacy",
"sync,ab-cd,src,./dojo,legacy-built,./built-i18n-test/152-build,legacy",
Expand All @@ -47,10 +39,6 @@ define([
"sync,ab-cd,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built/i18nTest,amd",
"sync,ab-cd,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built-with-layers/i18nTest,amd",
"sync,ab-cd,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built-with-layers-and-preloads/i18nTest,amd",
"sync,ab-cd,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,src,./i18n-test,amd",
"sync,ab-cd,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,built,./built-i18n-test/built/i18nTest,amd",
"sync,ab-cd,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,built,./built-i18n-test/built-with-layers/i18nTest,amd",
"sync,ab-cd,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,built,./built-i18n-test/built-with-layers-and-preloads/i18nTest,amd",

"sync,ab-cd-ef,src,./dojo,src,./i18n-test,legacy",
"sync,ab-cd-ef,src,./dojo,legacy-built,./built-i18n-test/152-build,legacy",
Expand All @@ -63,10 +51,6 @@ define([
"sync,ab-cd-ef,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built/i18nTest,amd",
"sync,ab-cd-ef,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built-with-layers/i18nTest,amd",
"sync,ab-cd-ef,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built-with-layers-and-preloads/i18nTest,amd",
"sync,ab-cd-ef,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,src,./i18n-test,amd",
"sync,ab-cd-ef,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,built,./built-i18n-test/built/i18nTest,amd",
"sync,ab-cd-ef,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,built,./built-i18n-test/built-with-layers/i18nTest,amd",
"sync,ab-cd-ef,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,built,./built-i18n-test/built-with-layers-and-preloads/i18nTest,amd",
"async,,src,./dojo,src,./i18n-test,amd",
"async,,src,./dojo,built,./built-i18n-test/built/i18nTest,amd",
"async,,src,./dojo,built,./built-i18n-test/built-with-layers/i18nTest,amd",
Expand All @@ -75,10 +59,6 @@ define([
"async,,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built/i18nTest,amd",
"async,,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built-with-layers/i18nTest,amd",
"async,,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built-with-layers-and-preloads/i18nTest,amd",
"async,,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,src,./i18n-test,amd",
"async,,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,built,./built-i18n-test/built/i18nTest,amd",
"async,,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,built,./built-i18n-test/built-with-layers/i18nTest,amd",
"async,,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,built,./built-i18n-test/built-with-layers-and-preloads/i18nTest,amd",

"async,ab,src,./dojo,src,./i18n-test,amd",
"async,ab,src,./dojo,built,./built-i18n-test/built/i18nTest,amd",
Expand All @@ -88,10 +68,6 @@ define([
"async,ab,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built/i18nTest,amd",
"async,ab,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built-with-layers/i18nTest,amd",
"async,ab,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built-with-layers-and-preloads/i18nTest,amd",
"async,ab,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,src,./i18n-test,amd",
"async,ab,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,built,./built-i18n-test/built/i18nTest,amd",
"async,ab,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,built,./built-i18n-test/built-with-layers/i18nTest,amd",
"async,ab,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,built,./built-i18n-test/built-with-layers-and-preloads/i18nTest,amd",

"async,ab-cd,src,./dojo,src,./i18n-test,amd",
"async,ab-cd,src,./dojo,built,./built-i18n-test/built/i18nTest,amd",
Expand All @@ -101,10 +77,6 @@ define([
"async,ab-cd,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built/i18nTest,amd",
"async,ab-cd,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built-with-layers/i18nTest,amd",
"async,ab-cd,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built-with-layers-and-preloads/i18nTest,amd",
"async,ab-cd,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,src,./i18n-test,amd",
"async,ab-cd,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,built,./built-i18n-test/built/i18nTest,amd",
"async,ab-cd,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,built,./built-i18n-test/built-with-layers/i18nTest,amd",
"async,ab-cd,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,built,./built-i18n-test/built-with-layers-and-preloads/i18nTest,amd",

"async,ab-cd-ef,src,./dojo,src,./i18n-test,amd",
"async,ab-cd-ef,src,./dojo,built,./built-i18n-test/built/i18nTest,amd",
Expand All @@ -113,11 +85,7 @@ define([
"async,ab-cd-ef,rel,./built-i18n-test/rel/dojo,src,./i18n-test,amd",
"async,ab-cd-ef,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built/i18nTest,amd",
"async,ab-cd-ef,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built-with-layers/i18nTest,amd",
"async,ab-cd-ef,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built-with-layers-and-preloads/i18nTest,amd",
"async,ab-cd-ef,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,src,./i18n-test,amd",
"async,ab-cd-ef,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,built,./built-i18n-test/built/i18nTest,amd",
"async,ab-cd-ef,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,built,./built-i18n-test/built-with-layers/i18nTest,amd",
"async,ab-cd-ef,cdn,http://192.168.1.114/dev/dtk/built-i18n-test/cdn/dojo,built,./built-i18n-test/built-with-layers-and-preloads/i18nTest,amd"];
"async,ab-cd-ef,rel,./built-i18n-test/rel/dojo,built,./built-i18n-test/built-with-layers-and-preloads/i18nTest,amd"];

for(var i = 0; i<testParams.length; i++){
doh.register("testsDOH._base.i18nExhaustive" + i, require.toUrl("dojo/main") + "/../../i18n-test/unit.html?" + testParams[i]);
Expand Down
28 changes: 23 additions & 5 deletions testsDOH/_base/loader/i18n-exhaustive/i18n-test/unit.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<html>
<!--<html>
<head>
<style type="text/css">
span.pass {background-color:green}
Expand All @@ -12,6 +12,19 @@
//#1,,src,./dojo",src,./dtk-i18n-test
(function(){
var escapes = {
"&": "&amp;",
"<": "&lt;",
">": "&gt;",
"\"": "&quot;",
"'": "&#039;"
};
function escape(unsafe) {
return unsafe.replace(/[&<>"']/g, function (match) {
return escapes[match];
});
}
var hashInfo = location.search.substring(1),
options = hashInfo.split(",");
async = options[0]=="async" ? true : undefined,
Expand All @@ -23,7 +36,11 @@
testId = "async: " + async + ", locale: " + locale + ", dojo: " + dojoType + ", i18nTest: " + i18nTestType + "(" + hashInfo + ")",
testKind = options[6];
document.getElementById("status").innerHTML += hashInfo;
if ((/^http/i).test(i18nTestLocation)) {
return;
}
document.getElementById("status").innerHTML += escape(hashInfo);
function report(result){
require(["doh"], function(doh){
Expand All @@ -39,7 +56,7 @@
}else{
text = "<span class='fail'>FAIL</span>: " + testId + "<br>" + result;
}
document.getElementById("status").innerHTML = text;
document.getElementById("status").innerHTML = escape(text);
}
dojoConfig = {
Expand Down Expand Up @@ -85,10 +102,11 @@
var node = document.createElement("script");
node.type = "text/javascript";
node.charset = "utf-8";
node.src = (/^http/.test(dojoLocation) ? dojoLocation : "../" + dojoLocation) + "/dojo.js";
// If a user passes a remote URL, force it to use the local dojo
node.src = ((/^http/i).test(dojoLocation) ? '../dojo' : "../" + dojoLocation) + "/dojo.js";
console.log(node.src);
document.getElementsByTagName("head")[0].appendChild(node);
})();
</script>
</body>
</html>
</html>-->
2 changes: 1 addition & 1 deletion testsDOH/_base/loader/i18n-exhaustive/test-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,6 @@ The various built module and loaders are constructed by the v1.7 builder. The sh
i18n-test/build-test-targets.sh accomplishes this task automatically.

A unit test html page is constructed at i18n-test/unit.html. Given a query string, it will load a particular loader and
exercise a particular set of modules.
exercise a particular set of modules. Its contents must be uncommented before running the tests.

Finally, the DOH test dojo/testsDOH/_base/i18nExhaustive runs all the various combinations.

0 comments on commit 9117ffd

Please sign in to comment.