56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								title: HTML Dom Innerhtml Property
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								## HTML Dom Innerhtml Property
							 | 
						||
| 
								 | 
							
								The `innerHTML` prop return the HTML content inside a selected element and also let you define a new HTML content.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								***GET ELEMENT CONTENT***
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```html
							 | 
						||
| 
								 | 
							
								<div id="demo">
							 | 
						||
| 
								 | 
							
								  <p>Demo</p>
							 | 
						||
| 
								 | 
							
								</div>
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```javascript
							 | 
						||
| 
								 | 
							
								var element = document.getElementById("demo");
							 | 
						||
| 
								 | 
							
								console.log(element.innerHTML) //logs <p>Demo</p>
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								***SET ELEMENT CONTENT***
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```html
							 | 
						||
| 
								 | 
							
								<div id="demo"></div>
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```javascript
							 | 
						||
| 
								 | 
							
								var element = document.getElementById("demo");
							 | 
						||
| 
								 | 
							
								element.innerHTML = "<div>Demo</div>";
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								The HTML now will be like
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```html
							 | 
						||
| 
								 | 
							
								<div id="demo">
							 | 
						||
| 
								 | 
							
								  <div>Demo</div>
							 | 
						||
| 
								 | 
							
								</div>
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								***SECURITY CONSIDERATIONS***
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The value that's set to `innerHTML` should come from trusted sources, since Javascript will put anything inside that element and it will be run as plain HTML.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Example:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Setting a "`<script>alert();</script>`" value will cause the Javascript "alert()" function to be fired:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```javascript
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var element = document.getElementById("demo");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								element.innerHTML = "<script>alert();</script>";
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This type of attack is called [Cross Site Scripting, or XSS for short](https://en.wikipedia.org/wiki/Cross-site_scripting).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This is one of the most common ways of committing an XSS attack. If you want to learn a little bit more and learn to defend against it, [check out this resource](https://xss-game.appspot.com/)
							 |