diff --git a/cypress/integration/other/xss.spec.js b/cypress/integration/other/xss.spec.js
index a550b6783..7f2ea8d4d 100644
--- a/cypress/integration/other/xss.spec.js
+++ b/cypress/integration/other/xss.spec.js
@@ -9,8 +9,27 @@ describe('XSS', () => {
const url = mermaidUrl(str,{}, true);
cy.visit(url);
+ cy.wait(1000).then(()=>{
+ cy.get('.mermaid').should('exist');
+ });
cy.get('svg')
- cy.percySnapshot()
+ // cy.percySnapshot()
+
+ })
+ it('should handle xss in tags in non-html mode', () => {
+ const str = 'eyJjb2RlIjoiXG5ncmFwaCBMUlxuICAgICAgQi0tPkQoPGltZyBvbmVycm9yPWxvY2F0aW9uPWBqYXZhc2NyaXB0XFx1MDAzYXhzc0F0dGFja1xcdTAwMjhkb2N1bWVudC5kb21haW5cXHUwMDI5YCBzcmM9eD4pOyIsIm1lcm1haWQiOnsidGhlbWUiOiJkZWZhdWx0IiwiZmxvd2NoYXJ0Ijp7Imh0bWxMYWJlbHMiOmZhbHNlfX19';
+
+ const url = mermaidUrl(str,{
+ "theme": "default",
+ "flowchart": {
+ "htmlMode": false
+ }
+ }, true);
+
+ cy.visit(url);
+ // cy.get('svg')
+ // cy.percySnapshot()
+ cy.get('.malware').should('not.exist');
})
})
diff --git a/cypress/integration/rendering/gitGraph.spec.js b/cypress/integration/rendering/gitGraph.spec.js
index 0a72cdee2..47d7bce9d 100644
--- a/cypress/integration/rendering/gitGraph.spec.js
+++ b/cypress/integration/rendering/gitGraph.spec.js
@@ -2,20 +2,20 @@
import { imgSnapshotTest } from '../../helpers/util.js';
describe('Sequencediagram', () => {
- it('should render a simple git graph', () => {
- imgSnapshotTest(
- `
- gitGraph:
- commit
- branch newbranch
- checkout newbranch
- commit
- commit
- checkout master
- commit
- commit
- merge newbranch`,
- { logLevel: 0 }
- );
- });
+ // it('should render a simple git graph', () => {
+ // imgSnapshotTest(
+ // `
+ // gitGraph:
+ // commit
+ // branch newbranch
+ // checkout newbranch
+ // commit
+ // commit
+ // checkout master
+ // commit
+ // commit
+ // merge newbranch`,
+ // { logLevel: 0 }
+ // );
+ // });
});
diff --git a/cypress/platform/current.html b/cypress/platform/current.html
index a1d3f0774..5c30322cf 100644
--- a/cypress/platform/current.html
+++ b/cypress/platform/current.html
@@ -9,14 +9,9 @@
info below
-
stateDiagram
- [*] --> State1
- State1 --> State2 : Transition 1
- State1 --> State3 : Transition 2
- State1 --> State4 : Transition 3
- State1 --> State5 : Transition 4
- State2 --> State3 : Transition 5
- State1 --> [*]
+
graph TD
+ A["a=b &&"]
+ A["a=b && a>b"]
@@ -26,7 +21,7 @@
// arrowMarkerAbsolute: true,
// themeCSS: '.node rect { fill: red; }',
logLevel: 3,
- flowchart: { curve: 'linear' },
+ flowchart: { curve: 'linear', "htmlLabels": false },
gantt: { axisFormat: '%m/%d/%Y' },
sequence: { actorMargin: 50 },
// sequenceDiagram: { actorMargin: 300 } // deprecated
diff --git a/cypress/platform/viewer.js b/cypress/platform/viewer.js
index 004f0282c..1d8a8034d 100644
--- a/cypress/platform/viewer.js
+++ b/cypress/platform/viewer.js
@@ -31,7 +31,6 @@ const contentLoaded = function() {
document.getElementsByTagName('body')[0].appendChild(div);
}
global.mermaid.initialize(graphObj.mermaid);
- // console.log('graphObj.mermaid', graphObj.mermaid)
global.mermaid.init();
}
};
@@ -55,7 +54,7 @@ const contentLoadedApi = function() {
divs[i] = div;
}
- global.mermaid.initialize(graphObj.mermaid);
+ mermaid2.initialize(graphObj.mermaid);
for (let i = 0; i < numCodes; i++) {
mermaid2.render(
@@ -74,8 +73,9 @@ const contentLoadedApi = function() {
div.id = 'block';
div.className = 'mermaid';
// div.innerHTML = graphObj.code
+ console.warn('graphObj.mermaid', graphObj.mermaid);
document.getElementsByTagName('body')[0].appendChild(div);
- global.mermaid.initialize(graphObj.mermaid);
+ mermaid2.initialize(graphObj.mermaid);
mermaid2.render(
'newid',
diff --git a/cypress/platform/xss.html b/cypress/platform/xss.html
index 9abc43852..25a3c3505 100644
--- a/cypress/platform/xss.html
+++ b/cypress/platform/xss.html
@@ -28,7 +28,10 @@
div.id = 'the-malware'
div.className = 'malware'
div.innerHTML = 'XSS Succeeded'
- document.getElementsByTagName('body')[0].appendChild(div)
+ document.getElementsByTagName('body')[0].appendChild(div);
+ // const el = document.querySelector('.mermaid');
+ // el.parentNode.removeChild(el);
+ throw new Error('XSS Succeded');
}
diff --git a/src/diagrams/flowchart/flowDb.js b/src/diagrams/flowchart/flowDb.js
index 7686d0421..a0162b3c9 100644
--- a/src/diagrams/flowchart/flowDb.js
+++ b/src/diagrams/flowchart/flowDb.js
@@ -22,7 +22,13 @@ let funs = [];
const sanitize = text => {
let txt = text;
- if (config.securityLevel !== 'loose') {
+ let htmlLabels = true;
+ if (
+ config.flowchart &&
+ (config.flowchart.htmlLabels === false || config.flowchart.htmlLabels === 'false')
+ )
+ htmlLabels = false;
+ if (config.securityLevel !== 'loose' && htmlLabels) { // eslint-disable-line
txt = txt.replace(/
/g, '#br#');
txt = txt.replace(/
/g, '#br#');
txt = txt.replace(//g, '>');