mirror of
				https://github.com/mermaid-js/mermaid.git
				synced 2025-10-31 02:44:17 +01:00 
			
		
		
		
	2122 Blöockling javascript urls
This commit is contained in:
		| @@ -58,5 +58,10 @@ describe('XSS', () => { | |||||||
|     cy.wait(1000); |     cy.wait(1000); | ||||||
|     cy.get('#the-malware').should('not.exist'); |     cy.get('#the-malware').should('not.exist'); | ||||||
|   }) |   }) | ||||||
|  |   it('should not allow maniplulating antiscript to run javascript', () => { | ||||||
|  |     cy.visit('http://localhost:9000/xss5.html'); | ||||||
|  |     cy.wait(1000); | ||||||
|  |     cy.get('#the-malware').should('not.exist'); | ||||||
|  |   }) | ||||||
|  |  | ||||||
| }) | }) | ||||||
|   | |||||||
							
								
								
									
										99
									
								
								cypress/platform/xss5.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								cypress/platform/xss5.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,99 @@ | |||||||
|  | <html> | ||||||
|  |   <head> | ||||||
|  |     <link | ||||||
|  |       href="https://fonts.googleapis.com/css?family=Montserrat&display=swap" | ||||||
|  |       rel="stylesheet" | ||||||
|  |     /> | ||||||
|  |     <link href="https://unpkg.com/tailwindcss@^1.0/dist/tailwind.min.css" rel="stylesheet"> | ||||||
|  |     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> | ||||||
|  |     <link href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap" rel="stylesheet"> | ||||||
|  |     <style> | ||||||
|  |       body { | ||||||
|  |         /* background: rgb(221, 208, 208); */ | ||||||
|  |         /* background:#333; */ | ||||||
|  |         font-family: 'Arial'; | ||||||
|  |         /* font-size: 18px !important; */ | ||||||
|  |         } | ||||||
|  |       h1 { color: grey;} | ||||||
|  |       .mermaid2 { | ||||||
|  |         display: none; | ||||||
|  |       } | ||||||
|  |       .mermaid svg { | ||||||
|  |         /* font-size: 18px !important; */ | ||||||
|  |       } | ||||||
|  |       .malware { | ||||||
|  |         position: fixed; | ||||||
|  |         bottom:0; | ||||||
|  |         left:0; | ||||||
|  |         right:0; | ||||||
|  |         height: 150px; | ||||||
|  |         background: red; | ||||||
|  |         color: black; | ||||||
|  |         display: flex; | ||||||
|  |         display: flex; | ||||||
|  |         justify-content: center; | ||||||
|  |         align-items: center; | ||||||
|  |         font-family: monospace; | ||||||
|  |         font-size: 72px; | ||||||
|  |       } | ||||||
|  |     </style> | ||||||
|  |   </head> | ||||||
|  |   <body> | ||||||
|  |     <div>Security check</div> | ||||||
|  |     <div class="flex"> | ||||||
|  |       <div id="diagram" class="mermaid"></div> | ||||||
|  |       <div id="res" class=""></div> | ||||||
|  |   <script src="./mermaid.js"></script> | ||||||
|  |     <script> | ||||||
|  |       mermaid.parseError = function (err, hash) { | ||||||
|  |           // console.error('Mermaid error: ', err); | ||||||
|  |         }; | ||||||
|  |       mermaid.initialize({ | ||||||
|  |         theme: 'forest', | ||||||
|  |         arrowMarkerAbsolute: true, | ||||||
|  |         // themeCSS: '.edgePath .path {stroke: red;} .arrowheadPath {fill: red;}', | ||||||
|  |         logLevel: 0, | ||||||
|  |         state: { | ||||||
|  |           defaultRenderer: 'dagre-wrapper', | ||||||
|  |         }, | ||||||
|  |         flowchart: { | ||||||
|  |           // defaultRenderer: 'dagre-wrapper', | ||||||
|  |           nodeSpacing: 10, curve: 'cardinal', htmlLabels: true | ||||||
|  |         }, | ||||||
|  |         htmlLabels: true, | ||||||
|  |         // gantt: { axisFormat: '%m/%d/%Y' }, | ||||||
|  |         sequence: { actorFontFamily: 'courier',actorMargin: 50, showSequenceNumbers: false }, | ||||||
|  |         // sequenceDiagram: { actorMargin: 300 } // deprecated | ||||||
|  |         // fontFamily: '"times", sans-serif', | ||||||
|  |         // fontFamily: 'courier', | ||||||
|  |         fontSize: 18, | ||||||
|  |         curve: 'basis', | ||||||
|  |         securityLevel: 'antiscript', | ||||||
|  |         startOnLoad: false, | ||||||
|  |         secure: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'] | ||||||
|  |         // themeVariables: {relationLabelColor: 'red'} | ||||||
|  |       }); | ||||||
|  |       function callback(){alert('It worked');} | ||||||
|  |       function xssAttack(){ | ||||||
|  |         const div = document.createElement('div') | ||||||
|  |         div.id = 'the-malware' | ||||||
|  |         div.className = 'malware' | ||||||
|  |         div.innerHTML = 'XSS Succeeded' | ||||||
|  |         document.getElementsByTagName('body')[0].appendChild(div); | ||||||
|  |         throw new Error('XSS Succeded'); | ||||||
|  |       } | ||||||
|  |       var diagram = "graph LR\n"; | ||||||
|  |   diagram += "B-->D\(\"<img onerror=location=\`java"; | ||||||
|  |   // diagram += "script\u003aalert\u0028document.domain\u0029\` src=x>\"\);\n"; | ||||||
|  |   diagram += "script\x3a;xssAttack\u0028\u0029\` src=x>\"\);\n"; | ||||||
|  |  | ||||||
|  |   console.log(diagram); | ||||||
|  |   // document.querySelector('#diagram').innerHTML = diagram; | ||||||
|  |   mermaid.render('diagram', diagram, (res) => { | ||||||
|  |     console.log(res); | ||||||
|  |     document.querySelector('#res').innerHTML = res; | ||||||
|  |   }); | ||||||
|  |     </script> | ||||||
|  |   </body> | ||||||
|  | </html> | ||||||
|  |  | ||||||
| @@ -26,6 +26,10 @@ export const removeScript = txt => { | |||||||
|       break; |       break; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   rs = rs.replace('javascript:', '#'); | ||||||
|  |   rs = rs.replace('<iframe', ''); | ||||||
|  |  | ||||||
|   return rs; |   return rs; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Knut Sveidqvist
					Knut Sveidqvist