Better escaping of code to prevent xss
This commit is contained in:
@@ -18,6 +18,18 @@ Setup is simple.
|
||||
```
|
||||
yarn install
|
||||
```
|
||||
or in develop branch to use the beta version of mermaid use
|
||||
```
|
||||
yarn install --update-checksums
|
||||
```
|
||||
|
||||
This together with a .npmrc file:
|
||||
```
|
||||
registry=https://registry.npmjs.com/
|
||||
@mermaid-js:registry=https://npm.pkg.github.com
|
||||
//npm.pkg.github.com/:_authToken="XXXXXXXXX"
|
||||
|
||||
```
|
||||
|
||||
|
||||
## Development
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@
|
||||
"js-base64": "^2.5.1",
|
||||
"json-lint": "^0.1.0",
|
||||
"jsonlint": "^1.6.3",
|
||||
"mermaid": "8.4.3",
|
||||
"@mermaid-js/mermaid": "*",
|
||||
"moment": "^2.24.0",
|
||||
"monaco-editor": "0.18.1",
|
||||
"svelte-routing": "^1.4.0",
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
<script>
|
||||
import Router from 'svelte-spa-router'
|
||||
// Used for SSR. A falsy value is ignored by the Router.
|
||||
export let url = "";
|
||||
export let name;
|
||||
import Edit from './routes/Edit.svelte'
|
||||
import View from './routes/View.svelte'
|
||||
|
||||
|
||||
@@ -13,7 +13,6 @@ import 'monaco-editor/esm/vs/editor/browser/controller/coreCommands.js';
|
||||
import 'monaco-editor/esm/vs/editor/contrib/find/findController.js';
|
||||
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';
|
||||
|
||||
export let data;
|
||||
export let conf = '';
|
||||
export let code = '';
|
||||
export let error = false;
|
||||
@@ -93,9 +92,6 @@ onMount(async () => {
|
||||
}
|
||||
});
|
||||
|
||||
export let name;
|
||||
export let params = {};
|
||||
export let errorText = ''
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
@@ -12,7 +12,6 @@ import 'monaco-editor/esm/vs/editor/browser/controller/coreCommands.js';
|
||||
import 'monaco-editor/esm/vs/editor/contrib/find/findController.js';
|
||||
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';
|
||||
|
||||
export let data;
|
||||
export let code = '';
|
||||
export let conf = { theme: 'default' };
|
||||
let edit;
|
||||
@@ -96,8 +95,8 @@ onMount(async () => {
|
||||
}
|
||||
});
|
||||
|
||||
export let name;
|
||||
export let params = {};
|
||||
// export let name;
|
||||
// export let params = {};
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
@@ -5,14 +5,14 @@ import { onMount } from 'svelte';
|
||||
onMount(async () => {
|
||||
});
|
||||
|
||||
export let code = '';
|
||||
// export let code = '';
|
||||
export let classes = '';
|
||||
|
||||
export let error = {};
|
||||
export let token = '';
|
||||
export let expected = '';
|
||||
// export let error = {};
|
||||
// export let token = '';
|
||||
// export let expected = '';
|
||||
|
||||
export let params = {}
|
||||
// export let params = {}
|
||||
export let errorText = '';
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<script>
|
||||
export let title = '';
|
||||
export let noPadding = false;
|
||||
let contentClass = 'padding';
|
||||
if (noPadding) {
|
||||
|
||||
@@ -70,7 +70,15 @@ let insertSvg = function(svgCode, bindFunctions){
|
||||
try {
|
||||
if(container && state) {
|
||||
code = state.code;
|
||||
container.innerHTML = code;
|
||||
|
||||
// mermaid.parse(code)
|
||||
// Replacing special characters '<' and '>' with encoded '<' and '>'
|
||||
let _code = code
|
||||
_code = _code.replace(/</g, '<')
|
||||
_code = _code.replace(/>/g, '>')
|
||||
|
||||
|
||||
container.innerHTML = _code;
|
||||
saveStatistcs(detectType(code));
|
||||
delete container.dataset.processed
|
||||
mermaid.initialize(state.mermaid)
|
||||
|
||||
@@ -8,7 +8,7 @@ import Tag from '../components/Tag.svelte';
|
||||
import Links from '../components/Links.svelte';
|
||||
import { fromUrl } from '../code-store.js';
|
||||
// import pkg from '@mermaid-js/mermaid/package.json'
|
||||
import pkg from 'mermaid/package.json'
|
||||
import pkg from '@mermaid/package.json'
|
||||
|
||||
export let mermaidVersion = pkg.version
|
||||
|
||||
@@ -18,12 +18,12 @@ onMount(async () => {
|
||||
fromUrl(params.data);
|
||||
});
|
||||
|
||||
export let code = '';
|
||||
export let classes = '';
|
||||
// export let code = '';
|
||||
// export let classes = '';
|
||||
|
||||
export let error = {};
|
||||
export let token = '';
|
||||
export let expected = '';
|
||||
// export let error = {};
|
||||
// export let token = '';
|
||||
// export let expected = '';
|
||||
export let params = {};
|
||||
|
||||
</script>
|
||||
|
||||
@@ -9,12 +9,12 @@ onMount(async () => {
|
||||
ga('send', 'pageview');
|
||||
});
|
||||
|
||||
export let code = '';
|
||||
export let classes = '';
|
||||
// export let code = '';
|
||||
// export let classes = '';
|
||||
|
||||
export let error = {};
|
||||
export let token = '';
|
||||
export let expected = '';
|
||||
// export let error = {};
|
||||
// export let token = '';
|
||||
// export let expected = '';
|
||||
export let params = {};
|
||||
</script>
|
||||
|
||||
|
||||
+2
-1
@@ -11,7 +11,8 @@ module.exports = {
|
||||
resolve: {
|
||||
alias: {
|
||||
svelte: path.resolve('node_modules', 'svelte'),
|
||||
"@mermaid": 'mermaid'
|
||||
// "@mermaid": 'mermaid'
|
||||
"@mermaid": '@mermaid-js/mermaid'
|
||||
},
|
||||
extensions: ['.mjs', '.js', '.svelte'],
|
||||
mainFields: ['svelte', 'browser', 'module', 'main']
|
||||
|
||||
@@ -7,6 +7,23 @@
|
||||
resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-3.1.0.tgz#8ff71d51053cd5ee4981e5a501d80a536244f7fd"
|
||||
integrity sha512-GcIY79elgB+azP74j8vqkiXz8xLFfIzbQJdlwOPisgbKT00tviJQuEghOXSMVxJ00HoYJbGswr4kcllUc4xCcg==
|
||||
|
||||
"@mermaid-js/mermaid@*":
|
||||
version "8.4.3-preview.797"
|
||||
resolved "https://npm.pkg.github.com/download/@mermaid-js/mermaid/8.4.3-preview.797/f5a0a8719adfd7e034b54c1adc7095bb359887c5761a4d1ccf105a7534a8e79a#"
|
||||
integrity sha512-8SOhm+ZR+tzjjD0cKybe5GqY40w+Uv0gmu9poyiWJtxvBnaL+Ws19eunpa+p+zeblq5DH4lqI3UWa/aanz8tiQ==
|
||||
dependencies:
|
||||
"@braintree/sanitize-url" "^3.1.0"
|
||||
crypto-random-string "^3.0.1"
|
||||
d3 "^5.7.0"
|
||||
dagre "^0.8.4"
|
||||
dagre-d3-unofficial "0.6.4"
|
||||
graphlib "^2.1.7"
|
||||
he "^1.2.0"
|
||||
lodash "^4.17.11"
|
||||
minify "^4.1.1"
|
||||
moment-mini "^2.22.1"
|
||||
scope-css "^1.2.1"
|
||||
|
||||
"@types/events@*":
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
|
||||
@@ -2767,23 +2784,6 @@ merge-descriptors@1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
|
||||
integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
|
||||
|
||||
mermaid@8.4.3:
|
||||
version "8.4.3"
|
||||
resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-8.4.3.tgz#d846edd97758cbf7925281a57c05f6a8d56c958e"
|
||||
integrity sha512-qgjIINkm9hqzMt1n7cZ9of1ZXhwqSOPrvuwcBMz3RBq/D+c4T/vN3RAjpW+ZINGbbhD+fMESl/xFvqI9svxt/w==
|
||||
dependencies:
|
||||
"@braintree/sanitize-url" "^3.1.0"
|
||||
crypto-random-string "^3.0.1"
|
||||
d3 "^5.7.0"
|
||||
dagre "^0.8.4"
|
||||
dagre-d3-unofficial "0.6.4"
|
||||
graphlib "^2.1.7"
|
||||
he "^1.2.0"
|
||||
lodash "^4.17.11"
|
||||
minify "^4.1.1"
|
||||
moment-mini "^2.22.1"
|
||||
scope-css "^1.2.1"
|
||||
|
||||
methods@~1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
|
||||
|
||||
Reference in New Issue
Block a user