<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://elvis.hcw.ac.at/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=RHaidl</id>
	<title>Elvis Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://elvis.hcw.ac.at/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=RHaidl"/>
	<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php/Special:Contributions/RHaidl"/>
	<updated>2026-09-10T13:07:14Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.5</generator>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=WebScanPro&amp;diff=14653</id>
		<title>WebScanPro</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=WebScanPro&amp;diff=14653"/>
		<updated>2024-03-31T17:58:25Z</updated>

		<summary type="html">&lt;p&gt;RHaidl: fixed typo &amp;quot;Next.js&amp;quot; -&amp;gt; &amp;quot;Nest.js&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
WebScanPro is a web application designed for the analysis of HTTP security headers.&lt;br /&gt;
Developed with a user-friendly interface and robust scanning capabilities, WebScanPro helps developers to strengthen the security of their web applications.&lt;br /&gt;
In addition WebScanPro also scans the TLS/SSL Version and provides feedback if it the certificate version should be updated or is up to date.&lt;br /&gt;
&lt;br /&gt;
== HTTP Headers ==&lt;br /&gt;
=== Content-Security-Policy ===&lt;br /&gt;
The HTTP Content-Security-Policy response header allows website administrators to control resources the user agent is allowed to load for a given page. With a few exceptions, policies mostly involve specifying server origins and script endpoints. This helps guard against cross-site scripting attacks (Cross-site scripting).&lt;br /&gt;
&lt;br /&gt;
=== Strict-Transport-Security (HSTS) ===&lt;br /&gt;
The HTTP Strict-Transport-Security response header (often abbreviated as HSTS) lets a website tell browsers that it should only be accessed using HTTPS, instead of using HTTP. Most websites automatically redirect to https but this header should still be used e.g. to prevent SSL Stripping attacks (When users visit a website, they first connect with the HTTP version before getting rerouted to the HTTPS version. In SSL stripping attacks, hackers jump in this window to act as a man in the middle and prevent users from ever connecting with the HTTPS version of the site.)&lt;br /&gt;
&lt;br /&gt;
=== X-XSS-Protection===&lt;br /&gt;
Browser stops loading the page if it detects reflected XSS&lt;br /&gt;
Use a Content Security Policy (CSP) that disables the use of inline JavaScript.&lt;br /&gt;
&lt;br /&gt;
Do not set this header or explicitly turn it off.&lt;br /&gt;
&lt;br /&gt;
=== X-Content-Type-Options ===&lt;br /&gt;
Blocks mime type sniffing and should be set as followed:&lt;br /&gt;
&amp;lt;code&amp;gt;X-Content-Type-Options: nosniff&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== X-Frame-Options ===&lt;br /&gt;
The X-Frame-Options HTTP response header can be used to indicate whether a browser should be allowed to render a page in a &amp;lt;code&amp;gt;&amp;amp;lt;frame&amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;iframe&amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;embed&amp;amp;gt;&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;&amp;amp;lt;object&amp;amp;gt;&amp;lt;/code&amp;gt;. Sites can use this to avoid click-jacking attacks, by ensuring that their content is not embedded into other sites. Should be set to &amp;lt;code&amp;gt;DENY&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;SAMEORIGIN&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Referrer-Policy ===&lt;br /&gt;
Referrer policy has been supported by browsers since 2014. Today, the default behavior in modern browsers is to no longer send all referrer information (origin, path, and query string) to the same site but to only send the origin to other sites. However, since not all users may be using the latest browsers and websites can (but should not!) have sensitive data in the query it is suggested forcing this behavior by sending this header on all responses.&lt;br /&gt;
&lt;br /&gt;
=== X-Webkit-CSP &amp;amp; X-Content-Security-Policy ===&lt;br /&gt;
Deprecated. Should only be used to implement CSP for very old browsers (&amp;lt;2013)&lt;br /&gt;
&lt;br /&gt;
=== Permissions-Policy ===&lt;br /&gt;
Permissions-Policy allows you to control which origins can use which browser features, both in the top-level page and in embedded frames. For every feature controlled by Feature Policy, the feature is only enabled in the current document or frame if its origin matches the allowed list of origins. This means that you can configure your site to never allow the camera or microphone to be activated.&lt;br /&gt;
&lt;br /&gt;
This prevents that an injection, for example an XSS, enables the camera, the microphone, or other browser feature.&lt;br /&gt;
    &amp;lt;code&amp;gt;Permissions-Policy: geolocation=(), camera=(), microphone=()&amp;lt;/code&amp;gt;&lt;br /&gt;
    This example is disabling geolocation, camera and microphne on all domains.&lt;br /&gt;
&lt;br /&gt;
=== X-Powered-By-Policy ===&lt;br /&gt;
The X-Powered-By header describes the technologies used by the webserver. This information exposes the server to attackers. Using the information in this header, attackers can find vulnerabilities easier.&lt;br /&gt;
    &lt;br /&gt;
== SSL/TLS Versions ==&lt;br /&gt;
&lt;br /&gt;
=== TLS Version 1.3 ===&lt;br /&gt;
TLS 1.3 is the latest and most secure version of the TLS protocol. It offers improved security, faster handshake, and enhanced privacy features.&lt;br /&gt;
&lt;br /&gt;
It is strongly recommended to use TLS 1.3 for the highest level of security.&lt;br /&gt;
&lt;br /&gt;
=== TLS Version 1.2 ===&lt;br /&gt;
TLS 1.2 is a widely adopted and secure version of the TLS protocol. It provides strong encryption and security features. While not the latest version, it is still considered secure and is widely supported.&lt;br /&gt;
&lt;br /&gt;
But an update to Version 1.3 is recommended.&lt;br /&gt;
&lt;br /&gt;
=== TLS Version 1.1 ===&lt;br /&gt;
TLS 1.1 is outdated and has known vulnerabilities. It is generally not recommended to use TLS 1.1 due to security concerns.&lt;br /&gt;
&lt;br /&gt;
Upgrading to a newer version, preferably TLS 1.3, is highly recommended.&lt;br /&gt;
&lt;br /&gt;
=== TLS Version 1.0 ===&lt;br /&gt;
TLS 1.0 is outdated and has significant security vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
Upgrading to a newer version, preferably TLS 1.3, is highly recommended.&lt;br /&gt;
&lt;br /&gt;
=== SSL Version 3 ===&lt;br /&gt;
SSLv3 is obsolete and has serious security flaws, including the POODLE vulnerability.&lt;br /&gt;
&lt;br /&gt;
Upgrading to a newer version, preferably TLS 1.3, is highly recommended.&lt;br /&gt;
&lt;br /&gt;
=== SSL Version 2 ===&lt;br /&gt;
SSLv2 is extremely outdated and insecure, with numerous vulnerabilities. Its use is strongly discouraged, and modern systems no longer support it.&lt;br /&gt;
&lt;br /&gt;
Upgrading to a newer version, preferably TLS 1.3, is highly recommended.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://nodejs.org Node.js]&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&#039;&#039;&#039;Frontend:&#039;&#039;&#039;&lt;br /&gt;
* [https://angular.io/ Angular]&lt;br /&gt;
* [https://www.chartjs.org/ Chart.js]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Backend:&#039;&#039;&#039;&lt;br /&gt;
* [https://nestjs.com/ Nest.js]&lt;br /&gt;
* [https://axios-http.com/ axios]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Step 1 ===&lt;br /&gt;
&lt;br /&gt;
Install [https://nodejs.org Node.js]&lt;br /&gt;
&lt;br /&gt;
=== Step 2 ===&lt;br /&gt;
&lt;br /&gt;
Clone [https://git.fh-campuswien.ac.at/c1810475113/WebScanPro.git WebScanPro respository]&lt;br /&gt;
&lt;br /&gt;
=== Step 3 ===&lt;br /&gt;
&lt;br /&gt;
Run &#039;&#039;&#039;npm install&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 4 ===&lt;br /&gt;
&lt;br /&gt;
Run &#039;&#039;&#039;npm start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 5 ===&lt;br /&gt;
&lt;br /&gt;
Open &#039;&#039;&#039;localhost:3000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&#039;&#039;&#039;Hint:&#039;&#039;&#039; if this port is already in use, you can change &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;app.listen(3000)&amp;lt;/syntaxhighlight&amp;gt; in &amp;lt;code&amp;gt;nest-js-server/main.ts&amp;lt;/code&amp;gt; to another port which is not in use.&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 6 ===&lt;br /&gt;
&lt;br /&gt;
Start scanning your web application and check the results.&lt;br /&gt;
Have fun!&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>RHaidl</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=WebScanPro&amp;diff=14008</id>
		<title>WebScanPro</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=WebScanPro&amp;diff=14008"/>
		<updated>2024-01-24T18:01:29Z</updated>

		<summary type="html">&lt;p&gt;RHaidl: /* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
WebScanPro is a web application designed for the analysis of HTTP security headers.&lt;br /&gt;
Developed with a user-friendly interface and robust scanning capabilities, WebScanPro helps developers to strengthen the security of their web applications.&lt;br /&gt;
In addition WebScanPro also scans the TLS/SSL Version and provides feedback if it the certificate version should be updated or is up to date.&lt;br /&gt;
&lt;br /&gt;
== HTTP Headers ==&lt;br /&gt;
=== Content-Security-Policy ===&lt;br /&gt;
The HTTP Content-Security-Policy response header allows website administrators to control resources the user agent is allowed to load for a given page. With a few exceptions, policies mostly involve specifying server origins and script endpoints. This helps guard against cross-site scripting attacks (Cross-site scripting).&lt;br /&gt;
&lt;br /&gt;
=== Strict-Transport-Security (HSTS) ===&lt;br /&gt;
The HTTP Strict-Transport-Security response header (often abbreviated as HSTS) lets a website tell browsers that it should only be accessed using HTTPS, instead of using HTTP. Most websites automatically redirect to https but this header should still be used e.g. to prevent SSL Stripping attacks (When users visit a website, they first connect with the HTTP version before getting rerouted to the HTTPS version. In SSL stripping attacks, hackers jump in this window to act as a man in the middle and prevent users from ever connecting with the HTTPS version of the site.)&lt;br /&gt;
&lt;br /&gt;
=== X-XSS-Protection===&lt;br /&gt;
Browser stops loading the page if it detects reflected XSS&lt;br /&gt;
Use a Content Security Policy (CSP) that disables the use of inline JavaScript.&lt;br /&gt;
&lt;br /&gt;
Do not set this header or explicitly turn it off.&lt;br /&gt;
&lt;br /&gt;
=== X-Content-Type-Options ===&lt;br /&gt;
Blocks mime type sniffing and should be set as followed:&lt;br /&gt;
&amp;lt;code&amp;gt;X-Content-Type-Options: nosniff&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== X-Frame-Options ===&lt;br /&gt;
The X-Frame-Options HTTP response header can be used to indicate whether a browser should be allowed to render a page in a &amp;lt;code&amp;gt;&amp;amp;lt;frame&amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;iframe&amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;embed&amp;amp;gt;&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;&amp;amp;lt;object&amp;amp;gt;&amp;lt;/code&amp;gt;. Sites can use this to avoid click-jacking attacks, by ensuring that their content is not embedded into other sites. Should be set to &amp;lt;code&amp;gt;DENY&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;SAMEORIGIN&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Referrer-Policy ===&lt;br /&gt;
Referrer policy has been supported by browsers since 2014. Today, the default behavior in modern browsers is to no longer send all referrer information (origin, path, and query string) to the same site but to only send the origin to other sites. However, since not all users may be using the latest browsers and websites can (but should not!) have sensitive data in the query it is suggested forcing this behavior by sending this header on all responses.&lt;br /&gt;
&lt;br /&gt;
=== X-Webkit-CSP &amp;amp; X-Content-Security-Policy ===&lt;br /&gt;
Deprecated. Should only be used to implement CSP for very old browsers (&amp;lt;2013)&lt;br /&gt;
&lt;br /&gt;
=== Permissions-Policy ===&lt;br /&gt;
Permissions-Policy allows you to control which origins can use which browser features, both in the top-level page and in embedded frames. For every feature controlled by Feature Policy, the feature is only enabled in the current document or frame if its origin matches the allowed list of origins. This means that you can configure your site to never allow the camera or microphone to be activated.&lt;br /&gt;
&lt;br /&gt;
This prevents that an injection, for example an XSS, enables the camera, the microphone, or other browser feature.&lt;br /&gt;
    &amp;lt;code&amp;gt;Permissions-Policy: geolocation=(), camera=(), microphone=()&amp;lt;/code&amp;gt;&lt;br /&gt;
    This example is disabling geolocation, camera and microphne on all domains.&lt;br /&gt;
&lt;br /&gt;
=== X-Powered-By-Policy ===&lt;br /&gt;
The X-Powered-By header describes the technologies used by the webserver. This information exposes the server to attackers. Using the information in this header, attackers can find vulnerabilities easier.&lt;br /&gt;
    &lt;br /&gt;
== SSL/TLS Versions ==&lt;br /&gt;
&lt;br /&gt;
=== TLS Version 1.3 ===&lt;br /&gt;
TLS 1.3 is the latest and most secure version of the TLS protocol. It offers improved security, faster handshake, and enhanced privacy features.&lt;br /&gt;
&lt;br /&gt;
It is strongly recommended to use TLS 1.3 for the highest level of security.&lt;br /&gt;
&lt;br /&gt;
=== TLS Version 1.2 ===&lt;br /&gt;
TLS 1.2 is a widely adopted and secure version of the TLS protocol. It provides strong encryption and security features. While not the latest version, it is still considered secure and is widely supported.&lt;br /&gt;
&lt;br /&gt;
But an update to Version 1.3 is recommended.&lt;br /&gt;
&lt;br /&gt;
=== TLS Version 1.1 ===&lt;br /&gt;
TLS 1.1 is outdated and has known vulnerabilities. It is generally not recommended to use TLS 1.1 due to security concerns.&lt;br /&gt;
&lt;br /&gt;
Upgrading to a newer version, preferably TLS 1.3, is highly recommended.&lt;br /&gt;
&lt;br /&gt;
=== TLS Version 1.0 ===&lt;br /&gt;
TLS 1.0 is outdated and has significant security vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
Upgrading to a newer version, preferably TLS 1.3, is highly recommended.&lt;br /&gt;
&lt;br /&gt;
=== SSL Version 3 ===&lt;br /&gt;
SSLv3 is obsolete and has serious security flaws, including the POODLE vulnerability.&lt;br /&gt;
&lt;br /&gt;
Upgrading to a newer version, preferably TLS 1.3, is highly recommended.&lt;br /&gt;
&lt;br /&gt;
=== SSL Version 2 ===&lt;br /&gt;
SSLv2 is extremely outdated and insecure, with numerous vulnerabilities. Its use is strongly discouraged, and modern systems no longer support it.&lt;br /&gt;
&lt;br /&gt;
Upgrading to a newer version, preferably TLS 1.3, is highly recommended.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://nodejs.org Node.js]&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&#039;&#039;&#039;Frontend:&#039;&#039;&#039;&lt;br /&gt;
* [https://angular.io/ Angular]&lt;br /&gt;
* [https://www.chartjs.org/ Chart.js]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Backend:&#039;&#039;&#039;&lt;br /&gt;
* [https://nestjs.com/ Next.js]&lt;br /&gt;
* [https://axios-http.com/ axios]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Step 1 ===&lt;br /&gt;
&lt;br /&gt;
Install [https://nodejs.org Node.js]&lt;br /&gt;
&lt;br /&gt;
=== Step 2 ===&lt;br /&gt;
&lt;br /&gt;
Clone [https://git.fh-campuswien.ac.at/c1810475113/WebScanPro.git WebScanPro respository]&lt;br /&gt;
&lt;br /&gt;
=== Step 3 ===&lt;br /&gt;
&lt;br /&gt;
Run &#039;&#039;&#039;npm install&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 4 ===&lt;br /&gt;
&lt;br /&gt;
Run &#039;&#039;&#039;npm start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 5 ===&lt;br /&gt;
&lt;br /&gt;
Open &#039;&#039;&#039;localhost:3000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&#039;&#039;&#039;Hint:&#039;&#039;&#039; if this port is already in use, you can change &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;app.listen(3000)&amp;lt;/syntaxhighlight&amp;gt; in &amp;lt;code&amp;gt;nest-js-server/main.ts&amp;lt;/code&amp;gt; to another port which is not in use.&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 6 ===&lt;br /&gt;
&lt;br /&gt;
Start scanning your web application and check the results.&lt;br /&gt;
Have fun!&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>RHaidl</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=WebScanPro&amp;diff=14007</id>
		<title>WebScanPro</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=WebScanPro&amp;diff=14007"/>
		<updated>2024-01-24T17:59:37Z</updated>

		<summary type="html">&lt;p&gt;RHaidl: added HTTP headers and SSL/TLS Version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
WebScanPro is a web application designed for the analysis of HTTP security headers.&lt;br /&gt;
Developed with a user-friendly interface and robust scanning capabilities, WebScanPro helps developers to strengthen the security of their web applications.&lt;br /&gt;
&lt;br /&gt;
== HTTP Headers ==&lt;br /&gt;
=== Content-Security-Policy ===&lt;br /&gt;
The HTTP Content-Security-Policy response header allows website administrators to control resources the user agent is allowed to load for a given page. With a few exceptions, policies mostly involve specifying server origins and script endpoints. This helps guard against cross-site scripting attacks (Cross-site scripting).&lt;br /&gt;
&lt;br /&gt;
=== Strict-Transport-Security (HSTS) ===&lt;br /&gt;
The HTTP Strict-Transport-Security response header (often abbreviated as HSTS) lets a website tell browsers that it should only be accessed using HTTPS, instead of using HTTP. Most websites automatically redirect to https but this header should still be used e.g. to prevent SSL Stripping attacks (When users visit a website, they first connect with the HTTP version before getting rerouted to the HTTPS version. In SSL stripping attacks, hackers jump in this window to act as a man in the middle and prevent users from ever connecting with the HTTPS version of the site.)&lt;br /&gt;
&lt;br /&gt;
=== X-XSS-Protection===&lt;br /&gt;
Browser stops loading the page if it detects reflected XSS&lt;br /&gt;
Use a Content Security Policy (CSP) that disables the use of inline JavaScript.&lt;br /&gt;
&lt;br /&gt;
Do not set this header or explicitly turn it off.&lt;br /&gt;
&lt;br /&gt;
=== X-Content-Type-Options ===&lt;br /&gt;
Blocks mime type sniffing and should be set as followed:&lt;br /&gt;
&amp;lt;code&amp;gt;X-Content-Type-Options: nosniff&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== X-Frame-Options ===&lt;br /&gt;
The X-Frame-Options HTTP response header can be used to indicate whether a browser should be allowed to render a page in a &amp;lt;code&amp;gt;&amp;amp;lt;frame&amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;iframe&amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;embed&amp;amp;gt;&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;&amp;amp;lt;object&amp;amp;gt;&amp;lt;/code&amp;gt;. Sites can use this to avoid click-jacking attacks, by ensuring that their content is not embedded into other sites. Should be set to &amp;lt;code&amp;gt;DENY&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;SAMEORIGIN&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Referrer-Policy ===&lt;br /&gt;
Referrer policy has been supported by browsers since 2014. Today, the default behavior in modern browsers is to no longer send all referrer information (origin, path, and query string) to the same site but to only send the origin to other sites. However, since not all users may be using the latest browsers and websites can (but should not!) have sensitive data in the query it is suggested forcing this behavior by sending this header on all responses.&lt;br /&gt;
&lt;br /&gt;
=== X-Webkit-CSP &amp;amp; X-Content-Security-Policy ===&lt;br /&gt;
Deprecated. Should only be used to implement CSP for very old browsers (&amp;lt;2013)&lt;br /&gt;
&lt;br /&gt;
=== Permissions-Policy ===&lt;br /&gt;
Permissions-Policy allows you to control which origins can use which browser features, both in the top-level page and in embedded frames. For every feature controlled by Feature Policy, the feature is only enabled in the current document or frame if its origin matches the allowed list of origins. This means that you can configure your site to never allow the camera or microphone to be activated.&lt;br /&gt;
&lt;br /&gt;
This prevents that an injection, for example an XSS, enables the camera, the microphone, or other browser feature.&lt;br /&gt;
    &amp;lt;code&amp;gt;Permissions-Policy: geolocation=(), camera=(), microphone=()&amp;lt;/code&amp;gt;&lt;br /&gt;
    This example is disabling geolocation, camera and microphne on all domains.&lt;br /&gt;
&lt;br /&gt;
=== X-Powered-By-Policy ===&lt;br /&gt;
The X-Powered-By header describes the technologies used by the webserver. This information exposes the server to attackers. Using the information in this header, attackers can find vulnerabilities easier.&lt;br /&gt;
    &lt;br /&gt;
== SSL/TLS Versions ==&lt;br /&gt;
&lt;br /&gt;
=== TLS Version 1.3 ===&lt;br /&gt;
TLS 1.3 is the latest and most secure version of the TLS protocol. It offers improved security, faster handshake, and enhanced privacy features.&lt;br /&gt;
&lt;br /&gt;
It is strongly recommended to use TLS 1.3 for the highest level of security.&lt;br /&gt;
&lt;br /&gt;
=== TLS Version 1.2 ===&lt;br /&gt;
TLS 1.2 is a widely adopted and secure version of the TLS protocol. It provides strong encryption and security features. While not the latest version, it is still considered secure and is widely supported.&lt;br /&gt;
&lt;br /&gt;
But an update to Version 1.3 is recommended.&lt;br /&gt;
&lt;br /&gt;
=== TLS Version 1.1 ===&lt;br /&gt;
TLS 1.1 is outdated and has known vulnerabilities. It is generally not recommended to use TLS 1.1 due to security concerns.&lt;br /&gt;
&lt;br /&gt;
Upgrading to a newer version, preferably TLS 1.3, is highly recommended.&lt;br /&gt;
&lt;br /&gt;
=== TLS Version 1.0 ===&lt;br /&gt;
TLS 1.0 is outdated and has significant security vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
Upgrading to a newer version, preferably TLS 1.3, is highly recommended.&lt;br /&gt;
&lt;br /&gt;
=== SSL Version 3 ===&lt;br /&gt;
SSLv3 is obsolete and has serious security flaws, including the POODLE vulnerability.&lt;br /&gt;
&lt;br /&gt;
Upgrading to a newer version, preferably TLS 1.3, is highly recommended.&lt;br /&gt;
&lt;br /&gt;
=== SSL Version 2 ===&lt;br /&gt;
SSLv2 is extremely outdated and insecure, with numerous vulnerabilities. Its use is strongly discouraged, and modern systems no longer support it.&lt;br /&gt;
&lt;br /&gt;
Upgrading to a newer version, preferably TLS 1.3, is highly recommended.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://nodejs.org Node.js]&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&#039;&#039;&#039;Frontend:&#039;&#039;&#039;&lt;br /&gt;
* [https://angular.io/ Angular]&lt;br /&gt;
* [https://www.chartjs.org/ Chart.js]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Backend:&#039;&#039;&#039;&lt;br /&gt;
* [https://nestjs.com/ Next.js]&lt;br /&gt;
* [https://axios-http.com/ axios]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Step 1 ===&lt;br /&gt;
&lt;br /&gt;
Install [https://nodejs.org Node.js]&lt;br /&gt;
&lt;br /&gt;
=== Step 2 ===&lt;br /&gt;
&lt;br /&gt;
Clone [https://git.fh-campuswien.ac.at/c1810475113/WebScanPro.git WebScanPro respository]&lt;br /&gt;
&lt;br /&gt;
=== Step 3 ===&lt;br /&gt;
&lt;br /&gt;
Run &#039;&#039;&#039;npm install&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 4 ===&lt;br /&gt;
&lt;br /&gt;
Run &#039;&#039;&#039;npm start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 5 ===&lt;br /&gt;
&lt;br /&gt;
Open &#039;&#039;&#039;localhost:3000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&#039;&#039;&#039;Hint:&#039;&#039;&#039; if this port is already in use, you can change &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;app.listen(3000)&amp;lt;/syntaxhighlight&amp;gt; in &amp;lt;code&amp;gt;nest-js-server/main.ts&amp;lt;/code&amp;gt; to another port which is not in use.&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 6 ===&lt;br /&gt;
&lt;br /&gt;
Start scanning your web application and check the results.&lt;br /&gt;
Have fun!&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>RHaidl</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=WebScanPro&amp;diff=14006</id>
		<title>WebScanPro</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=WebScanPro&amp;diff=14006"/>
		<updated>2024-01-23T19:52:04Z</updated>

		<summary type="html">&lt;p&gt;RHaidl: fixed structure of Architecture&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
WebScanPro is a web application designed for the analysis of HTTP security headers.&lt;br /&gt;
Developed with a user-friendly interface and robust scanning capabilities, WebScanPro helps developers to strengthen the security of their web applications.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://nodejs.org Node.js]&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&#039;&#039;&#039;Frontend:&#039;&#039;&#039;&lt;br /&gt;
* [https://angular.io/ Angular]&lt;br /&gt;
* [https://www.chartjs.org/ Chart.js]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Backend:&#039;&#039;&#039;&lt;br /&gt;
* [https://nestjs.com/ Next.js]&lt;br /&gt;
* [https://axios-http.com/ axios]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Step 1 ===&lt;br /&gt;
&lt;br /&gt;
Install [https://nodejs.org Node.js]&lt;br /&gt;
&lt;br /&gt;
=== Step 2 ===&lt;br /&gt;
&lt;br /&gt;
Clone [https://git.fh-campuswien.ac.at/c1810475113/WebScanPro.git WebScanPro respository]&lt;br /&gt;
&lt;br /&gt;
=== Step 3 ===&lt;br /&gt;
&lt;br /&gt;
Run &#039;&#039;&#039;npm install&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 4 ===&lt;br /&gt;
&lt;br /&gt;
Run &#039;&#039;&#039;npm start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 5 ===&lt;br /&gt;
&lt;br /&gt;
Open &#039;&#039;&#039;localhost:3000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&#039;&#039;&#039;Hint:&#039;&#039;&#039; if this port is already in use, you can change &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;app.listen(3000)&amp;lt;/syntaxhighlight&amp;gt; in &amp;lt;code&amp;gt;nest-js-server/main.ts&amp;lt;/code&amp;gt; to another port which is not in use.&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 6 ===&lt;br /&gt;
&lt;br /&gt;
Start scanning your web application and check the results.&lt;br /&gt;
Have fun!&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>RHaidl</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=WebScanPro&amp;diff=14005</id>
		<title>WebScanPro</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=WebScanPro&amp;diff=14005"/>
		<updated>2024-01-23T19:51:21Z</updated>

		<summary type="html">&lt;p&gt;RHaidl: fixed typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
WebScanPro is a web application designed for the analysis of HTTP security headers.&lt;br /&gt;
Developed with a user-friendly interface and robust scanning capabilities, WebScanPro helps developers to strengthen the security of their web applications.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://nodejs.org Node.js]&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&#039;&#039;&#039;Frontend:&#039;&#039;&#039;&lt;br /&gt;
* [https://angular.io/ Angular]&lt;br /&gt;
* [https://www.chartjs.org/ Chart.js]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Backend:&#039;&#039;&#039;&lt;br /&gt;
* Nest.js [https://nestjs.com/ Next.js]&lt;br /&gt;
* axios [https://axios-http.com/ axios]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Step 1 ===&lt;br /&gt;
&lt;br /&gt;
Install [https://nodejs.org Node.js]&lt;br /&gt;
&lt;br /&gt;
=== Step 2 ===&lt;br /&gt;
&lt;br /&gt;
Clone [https://git.fh-campuswien.ac.at/c1810475113/WebScanPro.git WebScanPro respository]&lt;br /&gt;
&lt;br /&gt;
=== Step 3 ===&lt;br /&gt;
&lt;br /&gt;
Run &#039;&#039;&#039;npm install&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 4 ===&lt;br /&gt;
&lt;br /&gt;
Run &#039;&#039;&#039;npm start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 5 ===&lt;br /&gt;
&lt;br /&gt;
Open &#039;&#039;&#039;localhost:3000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&#039;&#039;&#039;Hint:&#039;&#039;&#039; if this port is already in use, you can change &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;app.listen(3000)&amp;lt;/syntaxhighlight&amp;gt; in &amp;lt;code&amp;gt;nest-js-server/main.ts&amp;lt;/code&amp;gt; to another port which is not in use.&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 6 ===&lt;br /&gt;
&lt;br /&gt;
Start scanning your web application and check the results.&lt;br /&gt;
Have fun!&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>RHaidl</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=WebScanPro&amp;diff=14004</id>
		<title>WebScanPro</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=WebScanPro&amp;diff=14004"/>
		<updated>2024-01-23T19:50:26Z</updated>

		<summary type="html">&lt;p&gt;RHaidl: WebScanPro is a web application which scans and analyzes HTTP security headers.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
WebScanPro is a web application designed for the analysis of HTTP security headers.&lt;br /&gt;
Developed with a user-friendly interface and robust scanning capabilities, WebScanPro helps developers to strengthen the security of their web applications.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://nodejs.org Node.js]&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&#039;&#039;&#039;Frontend:&#039;&#039;&#039;&lt;br /&gt;
* [https://angular.io/ Angular]&lt;br /&gt;
* [https://www.chartjs.org/ Chart.js]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Backend:&#039;&#039;&#039;&lt;br /&gt;
* Nest.js [https://nestjs.com/ Next.js]&lt;br /&gt;
* axios [https://axios-http.com/ axios]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Step 1 ===&lt;br /&gt;
&lt;br /&gt;
Install [https://nodejs.org Node.js]&lt;br /&gt;
&lt;br /&gt;
=== Step 2 ===&lt;br /&gt;
&lt;br /&gt;
Clone [https://git.fh-campuswien.ac.at/c1810475113/WebScanPro.git WebScanPro respository]&lt;br /&gt;
&lt;br /&gt;
=== Step 3 ===&lt;br /&gt;
&lt;br /&gt;
Run &#039;&#039;&#039;npm install&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 4 ===&lt;br /&gt;
&lt;br /&gt;
Run &#039;&#039;&#039;npm start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 5 ===&lt;br /&gt;
&lt;br /&gt;
Open &#039;&#039;&#039;localhost:3000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&#039;&#039;&#039;Hint:&#039;&#039;&#039; if this port is already in use, you can change &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;app.listen(3000)&amp;lt;/syntaxhighlight&amp;gt; it in &amp;lt;code&amp;gt;nest-js-server/main.ts&amp;lt;/code&amp;gt; to another port which is not in use.&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 6 ===&lt;br /&gt;
&lt;br /&gt;
Start scanning your web application and check the results.&lt;br /&gt;
Have fun!&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>RHaidl</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Practical_stored_XSS_Example_using_Burp_Suite&amp;diff=10867</id>
		<title>Practical stored XSS Example using Burp Suite</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Practical_stored_XSS_Example_using_Burp_Suite&amp;diff=10867"/>
		<updated>2023-01-08T11:24:31Z</updated>

		<summary type="html">&lt;p&gt;RHaidl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
This practical guide shows how to execute a stored XSS exploit using burp suite.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Burp Suite&lt;br /&gt;
* Visual Studio&lt;br /&gt;
* GIT Project (https://github.com/Robert-Haidl/XSS_stored)&lt;br /&gt;
&lt;br /&gt;
In order to complete these steps, you must have followed the readme [https://github.com/Robert-Haidl/XSS_stored/blob/main/README.md] before.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
===Setup===&lt;br /&gt;
* Download Burp Suite (https://portswigger.net/burp/communitydownload)&lt;br /&gt;
* Clone GIT Project and run it locally using VisualStudios integrated IIS Express server.&lt;br /&gt;
* Check if you can add blog entries&lt;br /&gt;
&lt;br /&gt;
=== Step 1 ===&lt;br /&gt;
&lt;br /&gt;
Open Burp Suite, navigate to Proxy -&amp;gt; Intercept and make sure to turn &#039;&#039;&#039;Intercept on&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:stored_xss_step1.png|600px|turn on intercept]]&lt;br /&gt;
&lt;br /&gt;
=== Step 2 ===&lt;br /&gt;
&lt;br /&gt;
Click on &amp;quot;&#039;&#039;&#039;Open Browser&#039;&#039;&#039;&amp;quot; in order to open the integrated Burp Suite browser.&lt;br /&gt;
Once the browser started (it takes a while), open the &#039;&#039;&#039;add-entry.html&#039;&#039;&#039; file in it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step 3 ===&lt;br /&gt;
As the interceptor is turned on, all requests from the client to the server are intercepted.&lt;br /&gt;
All requests need to be forwarded, til the website has loaded completely. (Click on &#039;&#039;&#039;Forward&#039;&#039;&#039;)&lt;br /&gt;
[[File:stored_xss_step2.png|600px|intercepted request]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step 4 ===&lt;br /&gt;
Once the website has loaded, fill out the form with data and submit it.&lt;br /&gt;
Now you can see, that the client sends a POST request to the backend with the content of the form in JSON format.&lt;br /&gt;
&lt;br /&gt;
[[File:stored_xss_step3.png|600px|intercepted POST request]]&lt;br /&gt;
&lt;br /&gt;
=== Step 5 ===&lt;br /&gt;
As the transmitted data in the POST request is &#039;&#039;&#039;not validated on server side&#039;&#039;&#039;, you can change a parameter of the JSON to arbitrary JavaScript code.&lt;br /&gt;
&lt;br /&gt;
In this tutorial we change the &#039;&#039;&#039;&#039;description&#039;&#039;&#039;&#039; parameter to the following JavaScript code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;script&amp;gt;alert(&#039;XSS Code Injection&#039;)&amp;lt;/script&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and then forward the request.&lt;br /&gt;
&lt;br /&gt;
[[File:stored_xss_step4.png|600px|modified POST request]]&lt;br /&gt;
&lt;br /&gt;
=== Step 6 ===&lt;br /&gt;
Once you submitted the form and forwarded the request to the server you need to either turn off the Interceptor because you have already sent the malicious  code to the server (where it has been saved to the database) or forward all requests. After that you will be automatically redirected to the &#039;&#039;&#039;show-entry.html&#039;&#039;&#039; file where the &#039;&#039;&#039;malicious code is loaded from the server (DB) and executed on the client browser&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:stored_xss_step5.png|600px|javascript code is executed]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://portswigger.net/burp/documentation/desktop/penetration-testing&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>RHaidl</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Practical_stored_XSS_Example_using_Burp_Suite&amp;diff=10865</id>
		<title>Practical stored XSS Example using Burp Suite</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Practical_stored_XSS_Example_using_Burp_Suite&amp;diff=10865"/>
		<updated>2023-01-08T11:22:29Z</updated>

		<summary type="html">&lt;p&gt;RHaidl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
This practical guide shows how to execute a stored XSS exploit using burp suite.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Burp Suite&lt;br /&gt;
* Visual Studio&lt;br /&gt;
* GIT Project (https://github.com/Robert-Haidl/XSS_stored)&lt;br /&gt;
&lt;br /&gt;
In order to complete these steps, you must have followed the readme [https://github.com/Robert-Haidl/XSS_stored/blob/main/README.md] before.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
===Setup===&lt;br /&gt;
* Download Burp Suite (https://portswigger.net/burp/communitydownload)&lt;br /&gt;
* Clone GIT Project and run it locally using VisualStudios integrated IIS Express server.&lt;br /&gt;
* Check if you can add blog entries&lt;br /&gt;
&lt;br /&gt;
=== Step 1 ===&lt;br /&gt;
&lt;br /&gt;
Open Burp Suite, navigate to Proxy -&amp;gt; Intercept and make sure to turn &#039;&#039;&#039;Intercept on&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:stored_xss_step1.png|600px|turn on intercept]]&lt;br /&gt;
&lt;br /&gt;
=== Step 2 ===&lt;br /&gt;
&lt;br /&gt;
Click on &amp;quot;&#039;&#039;&#039;Open Browser&#039;&#039;&#039;&amp;quot; in order to open the integrated Burp Suite browser.&lt;br /&gt;
Once the browser started (it takes a while), open the &#039;&#039;&#039;add-entry.html&#039;&#039;&#039; file in it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step 3 ===&lt;br /&gt;
As the interceptor is turned on, all requests from the client to the server are intercepted.&lt;br /&gt;
All requests need to be forwarded, til the website loaded completely. (Click on &#039;&#039;&#039;Forward&#039;&#039;&#039;)&lt;br /&gt;
[[File:stored_xss_step2.png|600px|intercepted request]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step 4 ===&lt;br /&gt;
Once the website has loaded, fill out the form with data and submit it.&lt;br /&gt;
Now you can see, that the client sends a POST request to the backend with the content of the form in JSON.&lt;br /&gt;
&lt;br /&gt;
[[File:stored_xss_step3.png|600px|intercepted POST request]]&lt;br /&gt;
&lt;br /&gt;
=== Step 5 ===&lt;br /&gt;
Change the sent JSON data of the POST request. (use a parameter, which is displayed in the frontend e.g. &#039;description&#039;)&lt;br /&gt;
As the transmitted data in the POST request is not validated on server side, you can change a parameter of the JSON to arbitrary JavaScript code.&lt;br /&gt;
&lt;br /&gt;
In this tutorial we change the &#039;description&#039; parameter to the following JavaScript code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;script&amp;gt;alert(&#039;XSS Code Injection&#039;)&amp;lt;/script&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and then forward the request.&lt;br /&gt;
&lt;br /&gt;
[[File:stored_xss_step4.png|600px|modified POST request]]&lt;br /&gt;
&lt;br /&gt;
=== Step 6 ===&lt;br /&gt;
Once you submitted the form and forwarded the request to the server you need to either turn off the Interceptor because you have already sent the malicious  code to the server (where it has been saved to the database) or forward all requests. After that you will be automatically redirected to the &#039;&#039;&#039;show-entry.html&#039;&#039;&#039; file where the malicious is loaded from the server (DB) and executed on the client browser.&lt;br /&gt;
&lt;br /&gt;
[[File:stored_xss_step5.png|600px|javascript code is executed]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://portswigger.net/burp/documentation/desktop/penetration-testing&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>RHaidl</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Practical_stored_XSS_Example_using_Burp_Suite&amp;diff=10864</id>
		<title>Practical stored XSS Example using Burp Suite</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Practical_stored_XSS_Example_using_Burp_Suite&amp;diff=10864"/>
		<updated>2023-01-08T11:21:44Z</updated>

		<summary type="html">&lt;p&gt;RHaidl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
This practical guide shows how to execute a stored XSS exploit using burp suite.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Burp Suite&lt;br /&gt;
* Visual Studio&lt;br /&gt;
* GIT Project (https://github.com/Robert-Haidl/XSS_stored)&lt;br /&gt;
&lt;br /&gt;
In order to complete these steps, you must have followed the readme [https://github.com/Robert-Haidl/XSS_stored/blob/main/README.md] before.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
===Setup===&lt;br /&gt;
* Download Burp Suite (https://portswigger.net/burp/communitydownload)&lt;br /&gt;
* Clone GIT Project and run it locally using VisualStudios integrated IIS Express server.&lt;br /&gt;
* Check if you can add blog entries&lt;br /&gt;
&lt;br /&gt;
=== Step 1 ===&lt;br /&gt;
&lt;br /&gt;
Open Burp Suite, navigate to Proxy -&amp;gt; Intercept and make sure to turn &#039;&#039;&#039;Intercept on&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:stored_xss_step1.png|600px|turn on intercept]]&lt;br /&gt;
&lt;br /&gt;
=== Step 2 ===&lt;br /&gt;
&lt;br /&gt;
Click on &amp;quot;&#039;&#039;&#039;Open Browser&#039;&#039;&#039;&amp;quot; in order to open the integrated Burp Suite browser.&lt;br /&gt;
Once the browser started (it takes a while), open the &#039;&#039;&#039;add-entry.html&#039;&#039;&#039; file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step 3 ===&lt;br /&gt;
As the interceptor is turned on, all requests from the client to the server are intercepted.&lt;br /&gt;
All requests need to be forwarded, til the website loaded completely. (Click on &#039;&#039;&#039;Forward&#039;&#039;&#039;)&lt;br /&gt;
[[File:stored_xss_step2.png|600px|intercepted request]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step 4 ===&lt;br /&gt;
Once the website has loaded, fill out the form with data and submit it.&lt;br /&gt;
Now you can see, that the client sends a POST request to the backend with the content of the form in JSON.&lt;br /&gt;
&lt;br /&gt;
[[File:stored_xss_step3.png|600px|intercepted POST request]]&lt;br /&gt;
&lt;br /&gt;
=== Step 5 ===&lt;br /&gt;
Change the sent JSON data of the POST request. (use a parameter, which is displayed in the frontend e.g. &#039;description&#039;)&lt;br /&gt;
As the transmitted data in the POST request is not validated on server side, you can change a parameter of the JSON to arbitrary JavaScript code.&lt;br /&gt;
&lt;br /&gt;
In this tutorial we change the &#039;description&#039; parameter to the following JavaScript code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;script&amp;gt;alert(&#039;XSS Code Injection&#039;)&amp;lt;/script&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and then forward the request.&lt;br /&gt;
&lt;br /&gt;
[[File:stored_xss_step4.png|600px|modified POST request]]&lt;br /&gt;
&lt;br /&gt;
=== Step 6 ===&lt;br /&gt;
Once you submitted the form and forwarded the request to the server you need to either turn off the Interceptor because you have already sent the malicious  code to the server (where it has been saved to the database) or forward all requests. After that you will be automatically redirected to the &#039;&#039;&#039;show-entry.html&#039;&#039;&#039; file where the malicious is loaded from the server (DB) and executed on the client browser.&lt;br /&gt;
&lt;br /&gt;
[[File:stored_xss_step5.png|600px|javascript code is executed]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://portswigger.net/burp/documentation/desktop/penetration-testing&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>RHaidl</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Practical_stored_XSS_Example_using_Burp_Suite&amp;diff=10863</id>
		<title>Practical stored XSS Example using Burp Suite</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Practical_stored_XSS_Example_using_Burp_Suite&amp;diff=10863"/>
		<updated>2023-01-08T11:20:54Z</updated>

		<summary type="html">&lt;p&gt;RHaidl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
This practical guide shows how to execute a stored XSS exploit using burp suite.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Burp Suite&lt;br /&gt;
* Visual Studio&lt;br /&gt;
* GIT Project (https://github.com/Robert-Haidl/XSS_stored)&lt;br /&gt;
&lt;br /&gt;
In order to complete these steps, you must have followed the readme [https://github.com/Robert-Haidl/XSS_stored/blob/main/README.md] before.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
===Setup===&lt;br /&gt;
* Download Burp Suite (https://portswigger.net/burp/communitydownload)&lt;br /&gt;
* Clone GIT Project and run it locally using VisualStudios integrated IIS Express server.&lt;br /&gt;
* Check if you can add blog entries&lt;br /&gt;
&lt;br /&gt;
=== Step 1 ===&lt;br /&gt;
&lt;br /&gt;
Open Burp Suite, navigate to Proxy -&amp;gt; Intercept and make sure to turn &#039;&#039;&#039;Intercept on&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:stored_xss_step1.png|600px|turn on intercept]]&lt;br /&gt;
&lt;br /&gt;
=== Step 2 ===&lt;br /&gt;
&lt;br /&gt;
Click on &amp;quot;Open Browser&amp;quot; in order to open the integrated Burp Suite browser.&lt;br /&gt;
Once the browser started (it takes a while), open the &#039;&#039;&#039;add-entry.html&#039;&#039;&#039; file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step 3 ===&lt;br /&gt;
As the interceptor is turned on, all requests from the client to the server are intercepted.&lt;br /&gt;
All requests need to be forwarded, til the website loaded completely. (Click on &#039;&#039;&#039;Forward&#039;&#039;&#039;)&lt;br /&gt;
[[File:stored_xss_step2.png|600px|intercepted request]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step 4 ===&lt;br /&gt;
Once the website has loaded, fill out the form with data and submit it.&lt;br /&gt;
Now you can see, that the client sends a POST request to the backend with the content of the form in JSON.&lt;br /&gt;
&lt;br /&gt;
[[File:stored_xss_step3.png|600px|intercepted POST request]]&lt;br /&gt;
&lt;br /&gt;
=== Step 5 ===&lt;br /&gt;
Change the sent JSON data of the POST request. (use a parameter, which is displayed in the frontend e.g. &#039;description&#039;)&lt;br /&gt;
As the transmitted data in the POST request is not validated on server side, you can change a parameter of the JSON to arbitrary JavaScript code.&lt;br /&gt;
&lt;br /&gt;
In this tutorial we change the &#039;description&#039; parameter to the following JavaScript code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;script&amp;gt;alert(&#039;XSS Code Injection&#039;)&amp;lt;/script&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and then forward the request.&lt;br /&gt;
&lt;br /&gt;
[[File:stored_xss_step4.png|600px|modified POST request]]&lt;br /&gt;
&lt;br /&gt;
=== Step 6 ===&lt;br /&gt;
Once you submitted the form and forwarded the request to the server you need to either turn off the Interceptor because you have already sent the malicious  code to the server (where it has been saved to the database) or forward all requests. After that you will be automatically redirected to the &#039;&#039;&#039;show-entry.html&#039;&#039;&#039; file where the malicious is loaded from the server (DB) and executed on the client browser.&lt;br /&gt;
&lt;br /&gt;
[[File:stored_xss_step5.png|600px|javascript code is executed]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://portswigger.net/burp/documentation/desktop/penetration-testing&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>RHaidl</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=File:Stored_xss_step5.png&amp;diff=10861</id>
		<title>File:Stored xss step5.png</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=File:Stored_xss_step5.png&amp;diff=10861"/>
		<updated>2023-01-08T11:12:05Z</updated>

		<summary type="html">&lt;p&gt;RHaidl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>RHaidl</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=File:Stored_xss_step4.png&amp;diff=10857</id>
		<title>File:Stored xss step4.png</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=File:Stored_xss_step4.png&amp;diff=10857"/>
		<updated>2023-01-08T10:57:46Z</updated>

		<summary type="html">&lt;p&gt;RHaidl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>RHaidl</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=File:Stored_xss_step3.png&amp;diff=10856</id>
		<title>File:Stored xss step3.png</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=File:Stored_xss_step3.png&amp;diff=10856"/>
		<updated>2023-01-08T10:54:59Z</updated>

		<summary type="html">&lt;p&gt;RHaidl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>RHaidl</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=File:Stored_xss_step2.png&amp;diff=10853</id>
		<title>File:Stored xss step2.png</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=File:Stored_xss_step2.png&amp;diff=10853"/>
		<updated>2023-01-08T10:47:53Z</updated>

		<summary type="html">&lt;p&gt;RHaidl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>RHaidl</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Practical_stored_XSS_Example_using_Burp_Suite&amp;diff=10850</id>
		<title>Practical stored XSS Example using Burp Suite</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Practical_stored_XSS_Example_using_Burp_Suite&amp;diff=10850"/>
		<updated>2023-01-08T10:02:22Z</updated>

		<summary type="html">&lt;p&gt;RHaidl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
This practical guide shows how to generate a stored XSS exploit using burp suite.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Burp Suite&lt;br /&gt;
* Visual Studio&lt;br /&gt;
* GIT Project (https://github.com/Robert-Haidl/XSS_stored)&lt;br /&gt;
&lt;br /&gt;
In order to complete these steps, you must have followed the readme [https://github.com/Robert-Haidl/XSS_stored/blob/main/README.md] before.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
===Setup===&lt;br /&gt;
* Download and run Burp Suite (https://portswigger.net/burp/communitydownload)&lt;br /&gt;
* Clone GIT Project and run it locally using VisualStudios integrated IIS Express server.&lt;br /&gt;
* Check if you can add blog entries&lt;br /&gt;
&lt;br /&gt;
=== Step 1 ===&lt;br /&gt;
&lt;br /&gt;
Open Burp Suite, navigate to Proxy -&amp;gt; Intercept and make sure to turn Intercept on.&lt;br /&gt;
&lt;br /&gt;
[[File:stored_xss_step1.png|600px|thumb|left|turn on intercept]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://portswigger.net/burp/documentation/desktop/penetration-testing&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>RHaidl</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Practical_stored_XSS_Example_using_Burp_Suite&amp;diff=10849</id>
		<title>Practical stored XSS Example using Burp Suite</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Practical_stored_XSS_Example_using_Burp_Suite&amp;diff=10849"/>
		<updated>2023-01-08T10:01:42Z</updated>

		<summary type="html">&lt;p&gt;RHaidl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
This practical guide shows how to generate a stored XSS exploit using burp suite.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Burp Suite&lt;br /&gt;
* Visual Studio&lt;br /&gt;
* GIT Project (https://github.com/Robert-Haidl/XSS_stored)&lt;br /&gt;
&lt;br /&gt;
In order to complete these steps, you must have followed the readme ([[https://github.com/Robert-Haidl/XSS_stored/blob/main/README.md]]) before.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
===Setup===&lt;br /&gt;
* Download and run Burp Suite (https://portswigger.net/burp/communitydownload)&lt;br /&gt;
* Clone GIT Project and run it locally using VisualStudios integrated IIS Express server.&lt;br /&gt;
* Check if you can add blog entries&lt;br /&gt;
&lt;br /&gt;
=== Step 1 ===&lt;br /&gt;
&lt;br /&gt;
Open Burp Suite, navigate to Proxy -&amp;gt; Intercept and make sure to turn Intercept on.&lt;br /&gt;
&lt;br /&gt;
[[File:stored_xss_step1.png|600px|thumb|left|turn on intercept]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://portswigger.net/burp/documentation/desktop/penetration-testing&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>RHaidl</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Practical_stored_XSS_Example_using_Burp_Suite&amp;diff=10848</id>
		<title>Practical stored XSS Example using Burp Suite</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Practical_stored_XSS_Example_using_Burp_Suite&amp;diff=10848"/>
		<updated>2023-01-08T10:01:25Z</updated>

		<summary type="html">&lt;p&gt;RHaidl: Created page with &amp;quot;== Summary ==   This practical guide shows how to generate a stored XSS exploit using burp suite.  == Requirements ==  * Burp Suite * Visual Studio * GIT Project (https://github.com/Robert-Haidl/XSS_stored)  In order to complete these steps, you must have followed the readme (https://github.com/Robert-Haidl/XSS_stored/blob/main/README.md) before.  == Description ==  ===Setup=== * Download and run Burp Suite (https://portswigger.net/burp/communitydownload) * Clone GIT...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
This practical guide shows how to generate a stored XSS exploit using burp suite.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Burp Suite&lt;br /&gt;
* Visual Studio&lt;br /&gt;
* GIT Project (https://github.com/Robert-Haidl/XSS_stored)&lt;br /&gt;
&lt;br /&gt;
In order to complete these steps, you must have followed the readme ([[https://github.com/Robert-Haidl/XSS_stored/blob/main/README.md]]) before.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
===Setup===&lt;br /&gt;
* Download and run Burp Suite (https://portswigger.net/burp/communitydownload)&lt;br /&gt;
* Clone GIT Project and run it locally using VisualStudios integrated IIS Express server.&lt;br /&gt;
* Check if you can add blog entries&lt;br /&gt;
&lt;br /&gt;
=== Step 1 ===&lt;br /&gt;
&lt;br /&gt;
Open Burp Suite, navigate to Proxy -&amp;gt; Intercept and make sure to turn Intercept on.&lt;br /&gt;
&lt;br /&gt;
[[File:stored_xss_step1.png|600px|thumb|right|turn on intercept]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://portswigger.net/burp/documentation/desktop/penetration-testing&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>RHaidl</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=File:Stored_xss_step1.png&amp;diff=10847</id>
		<title>File:Stored xss step1.png</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=File:Stored_xss_step1.png&amp;diff=10847"/>
		<updated>2023-01-08T09:57:00Z</updated>

		<summary type="html">&lt;p&gt;RHaidl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>RHaidl</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Cross-Site_Scripting_(XSS)&amp;diff=10767</id>
		<title>Cross-Site Scripting (XSS)</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Cross-Site_Scripting_(XSS)&amp;diff=10767"/>
		<updated>2023-01-07T12:52:39Z</updated>

		<summary type="html">&lt;p&gt;RHaidl: added more prevention methods and listed them in a more structured way&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Basic]]&lt;br /&gt;
== Cross-Site-Scripting (XSS) ==&lt;br /&gt;
&lt;br /&gt;
Cross-Site Scripting is a class of web application vulnerabilities, which is still one of the most common security vulnerabilities in web applications and can be used to compromise the confidentiality, integrity, and availability of the application. In general, XSS vulnerabilities allow an attacker to execute script code in the web browser of the victim and can be used to gain data from users, like cookies or private information. The different types are listed below. It is also possible to trigger actions on websites, redirect to other sites or hide advertisements. A short game with which some options can be seen easily: [https://xss-game.appspot.com/ XSS game]&lt;br /&gt;
&lt;br /&gt;
== Types ==&lt;br /&gt;
There are two ways to classify XSS attacks. Up until 2012 the types DOM-based (Type 0), stored/persistent (Type I) and reflected/non-persistent (Type II) were used. As these three types can overlap the research community started to use the terms Server XSS and Client XSS from 2012 on.&lt;br /&gt;
[[File:Server-XSS_vs_Client-XSS_Chart.png|200px|thumb]]&lt;br /&gt;
&lt;br /&gt;
=== Stored (Type I) ===&lt;br /&gt;
With Stored XSS, also referred to as persistent XSS, the application or API saves uncleaned user input on the server, such as in a database, comment field, visitor log, etc., which then is displayed at a later point in time by another user or administrator, that requested the stored information. &lt;br /&gt;
&lt;br /&gt;
=== Reflected (Type II) ===&lt;br /&gt;
Reflected XSS is a non-persistent attack and is used to steal session cookies from a user. With Reflected XSS, the application or API includes unchecked and unmasked input from the user as part of the HTML output. If the attack was successful, the attacker could execute arbitrary HTML and a scripting language such as Javascript in the victim&#039;s browser. Typically, a user will have to click on a malicious link to do this. The attacker tries to bring this harmful link to the victim, via advertising, e-mail etc. &lt;br /&gt;
&lt;br /&gt;
=== DOM Based (Type 0) ===&lt;br /&gt;
DOM-based Cross-Site Scripting (XSS) is a type of XSS attack that occurs when malicious code is injected directly into the Document Object Model (DOM) of the web application. DOM-based XSS attacks can occur when user-supplied data is used to generate client-side JavaScript code without proper input validation. The malicious code is then sent to a user&#039;s browser, where it is executed. DOM-based XSS attacks can be used to gain access to sensitive information, perform malicious activities, and even hijack the user’s browser.&lt;br /&gt;
&lt;br /&gt;
== Prevention==&lt;br /&gt;
&lt;br /&gt;
The prevention of these vulnerabilities are the task of the programmer. The programmer should be encouraged to use secure programming measures, like Context-sensitive server-side output encoding, to ensure that it is not possible to inject malicious scripts into the site through incorrect or unchecked entries.&lt;br /&gt;
&lt;br /&gt;
* Input validation: The most effective way to prevent cross-site scripting attacks is to perform rigorous input validation. This means validating any user input before it is accepted and processed by the server.&lt;br /&gt;
* Output encoding: Output encoding is another effective way to prevent cross-site scripting. This technique involves encoding all output data (using HTML entities) so that it is properly displayed in the user’s browser.&lt;br /&gt;
*Content Security Policy: Content Security Policy (CSP) is a security measure that can be used to prevent cross-site scripting attacks. It is a set of rules that define what type of content a website can load.&lt;br /&gt;
*Use of tokens: Tokens are random strings of characters that are used to identify a user. This can help to prevent cross-site scripting attacks by ensuring that only authorized users can access the website.&lt;br /&gt;
*Disabling script execution: Disabling script execution on the server can also help to prevent cross-site scripting attacks. This can be done by disabling the use of certain scripting languages such as JavaScript or VBScript. But as JavaScript is commonly used, this approach is rarely used by programmers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://owasp.org/www-community/attacks/xss/&lt;br /&gt;
* https://cheatsheetseries.owasp.org/cheatsheets/DOM_based_XSS_Prevention_Cheat_Sheet.html&lt;br /&gt;
* https://owasp.org/www-project-top-ten/2017/A7_2017-Cross-Site_Scripting_(XSS)&lt;/div&gt;</summary>
		<author><name>RHaidl</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Cross-Site_Request_Forgery_(CSRF)&amp;diff=10739</id>
		<title>Cross-Site Request Forgery (CSRF)</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Cross-Site_Request_Forgery_(CSRF)&amp;diff=10739"/>
		<updated>2023-01-07T10:02:46Z</updated>

		<summary type="html">&lt;p&gt;RHaidl: added Same-Origin Policy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Basic]]&lt;br /&gt;
== Cross-Site-Request Forgery (CSRF) ==&lt;br /&gt;
&lt;br /&gt;
Cross-Site Request Forgery, also known as CSRF or XSRF, is an attack where a malicious website, email message, web application, or blog causes an unwanted web browser action on a trusted site where a user is currently authenticated. The consequences of a CSRF attack depend on the extent to which the vulnerable application is hit. In the simplest case, attackers use CSRF attacks to cause a target system to perform available and malicious functions through the target&#039;s browser without the target user&#039;s knowledge. This function is usually not known to the victim until after it occurs.&lt;br /&gt;
&lt;br /&gt;
A CSRF vulnerability allows an attacker to force an authenticated, logged-in user to perform an important action without the user&#039;s consent or knowledge. This way leaves no trace of the attacker from the web application&#039;s point of view. The reason for this is, the fake request contains all the victim&#039;s information and comes from the same IP address as a real request from the victim. As a consequence, any application that allows a user to send or update data is a potential target for an attacker.&lt;br /&gt;
&lt;br /&gt;
The important thing to remember about CSRF is that these attacks only work if the victim is logged into the target website. This may be a complication for attackers, but many websites allow users to click something like &amp;quot;Stay logged in,&amp;quot; which makes the attacker&#039;s job easier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== File Inclusion ==&lt;br /&gt;
===Local File Inclusion (LFI)===&lt;br /&gt;
Local File Inclusion (LFI) is a type of Cross-Site Request Forgery (CSRF) attack in which an attacker injects malicious code into a vulnerable web application to gain access to sensitive information stored in the web server&#039;s local file system. The attacker is able to execute arbitrary code on the server by exploiting the application&#039;s security vulnerabilities. The malicious code is then used to download and modify web application files, steal privileged information, or even execute malicious code on the server.&lt;br /&gt;
===Remote File Inclusion (RFI)===&lt;br /&gt;
Remote File Inclusion (RFI) is a type of attack where an attacker tricks a web server into including a malicious file from a remote server. The malicious file may contain code to steal data, modify data, or launch other attacks on the vulnerable web server. It can also allow the attacker to gain access to sensitive information, such as user credentials and other sensitive data.&lt;br /&gt;
&lt;br /&gt;
== Prevention ==&lt;br /&gt;
&lt;br /&gt;
To detect this vulnerability, one checks that each link and form is protected with an unpredictable &amp;quot;secret&amp;quot; token. Alternatively, one can have the user reconfirm the request, e.g., by re-authenticating or entering CAPTCHA. Here, one can focus on links and forms that actually trigger a state-changing function, as these are the most important targets for CSRF. Multi-step transactions should also be examined, as they can be equally vulnerable. An attacker can easily trigger a sequence of fake requests by using multiple tags or even JavaScript.&lt;br /&gt;
&lt;br /&gt;
To prevent CSRF, each input page should contain a token. The token should be unpredictable, secret and unique for each session, or better for each form, and &lt;br /&gt;
checked by the server.  CSRF tokens should be generated on the server-side. Generally, per-request tokens are more secure than per-session tokens as the time range for an attacker to exploit the stolen tokens is minimal.&lt;br /&gt;
&lt;br /&gt;
* The preferred method to embed the token is a hidden input field. This way the token value is transferred in the body of the request and not in the URL, which otherwise facilitates spying. &lt;br /&gt;
&lt;br /&gt;
* Such a token can also be written directly into the URL or passed as a URL parameter. However, by doing that we fix one security flaw by creating a new one. This approach carries the risk that the URL falls into the hands of the attacker and thus the secret token is compromised. &lt;br /&gt;
&lt;br /&gt;
* Active reconfirmation from the user, in the form of re-authentication, CAPTCHA input, etc. can also protect against CSRF. &lt;br /&gt;
&lt;br /&gt;
Generally, it is recommended to use built-in or existing CSRF implementations for CSRF Protection. OWASP also advises to research if the framework used in your project has an option to achieve CSRF Protection, since many Frameworks have built-in implementations for these types of attacks. &lt;br /&gt;
&lt;br /&gt;
===Same-Origin Policy===&lt;br /&gt;
Another possibility for preventing Cross-Site Request Forgery is the Same-Origin Policy, which is a security measure implemented by web browsers to restrict malicious activity from websites by preventing cross-site requests. This policy means that a web browser will only allow a web page to access resources from the same origin (domain, protocol, and port) as the page itself. By restricting access to resources from the same origin, the Same-Origin Policy helps to ensure that only the intended website can access the resources and prevent malicious attempts to hijack the user&#039;s session.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://owasp.org/www-community/attacks/csrf&lt;br /&gt;
* https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html&lt;br /&gt;
* https://owasp.org/www-community/Anti_CRSF_Tokens_ASP-NET&lt;br /&gt;
* https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy&lt;/div&gt;</summary>
		<author><name>RHaidl</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Cross-Site_Request_Forgery_(CSRF)&amp;diff=10738</id>
		<title>Cross-Site Request Forgery (CSRF)</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Cross-Site_Request_Forgery_(CSRF)&amp;diff=10738"/>
		<updated>2023-01-07T09:53:20Z</updated>

		<summary type="html">&lt;p&gt;RHaidl: added File Inclusion section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Basic]]&lt;br /&gt;
== Cross-Site-Request Forgery (CSRF) ==&lt;br /&gt;
&lt;br /&gt;
Cross-Site Request Forgery, also known as CSRF or XSRF, is an attack where a malicious website, email message, web application, or blog causes an unwanted web browser action on a trusted site where a user is currently authenticated. The consequences of a CSRF attack depend on the extent to which the vulnerable application is hit. In the simplest case, attackers use CSRF attacks to cause a target system to perform available and malicious functions through the target&#039;s browser without the target user&#039;s knowledge. This function is usually not known to the victim until after it occurs.&lt;br /&gt;
&lt;br /&gt;
A CSRF vulnerability allows an attacker to force an authenticated, logged-in user to perform an important action without the user&#039;s consent or knowledge. This way leaves no trace of the attacker from the web application&#039;s point of view. The reason for this is, the fake request contains all the victim&#039;s information and comes from the same IP address as a real request from the victim. As a consequence, any application that allows a user to send or update data is a potential target for an attacker.&lt;br /&gt;
&lt;br /&gt;
The important thing to remember about CSRF is that these attacks only work if the victim is logged into the target website. This may be a complication for attackers, but many websites allow users to click something like &amp;quot;Stay logged in,&amp;quot; which makes the attacker&#039;s job easier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== File Inclusion ==&lt;br /&gt;
===Local File Inclusion (LFI)===&lt;br /&gt;
Local File Inclusion (LFI) is a type of Cross-Site Request Forgery (CSRF) attack in which an attacker injects malicious code into a vulnerable web application to gain access to sensitive information stored in the web server&#039;s local file system. The attacker is able to execute arbitrary code on the server by exploiting the application&#039;s security vulnerabilities. The malicious code is then used to download and modify web application files, steal privileged information, or even execute malicious code on the server.&lt;br /&gt;
===Remote File Inclusion (RFI)===&lt;br /&gt;
Remote File Inclusion (RFI) is a type of attack where an attacker tricks a web server into including a malicious file from a remote server. The malicious file may contain code to steal data, modify data, or launch other attacks on the vulnerable web server. It can also allow the attacker to gain access to sensitive information, such as user credentials and other sensitive data.&lt;br /&gt;
&lt;br /&gt;
== Prevention ==&lt;br /&gt;
&lt;br /&gt;
To detect this vulnerability, one checks that each link and form is protected with an unpredictable &amp;quot;secret&amp;quot; token. Alternatively, one can have the user reconfirm the request, e.g., by re-authenticating or entering CAPTCHA. Here, one can focus on links and forms that actually trigger a state-changing function, as these are the most important targets for CSRF. Multi-step transactions should also be examined, as they can be equally vulnerable. An attacker can easily trigger a sequence of fake requests by using multiple tags or even JavaScript.&lt;br /&gt;
&lt;br /&gt;
To prevent CSRF, each input page should contain a token. The token should be unpredictable, secret and unique for each session, or better for each form, and &lt;br /&gt;
checked by the server.  CSRF tokens should be generated on the server-side. Generally, per-request tokens are more secure than per-session tokens as the time range for an attacker to exploit the stolen tokens is minimal.&lt;br /&gt;
&lt;br /&gt;
* The preferred method to embed the token is a hidden input field. This way the token value is transferred in the body of the request and not in the URL, which otherwise facilitates spying. &lt;br /&gt;
&lt;br /&gt;
* Such a token can also be written directly into the URL or passed as a URL parameter. However, by doing that we fix one security flaw by creating a new one. This approach carries the risk that the URL falls into the hands of the attacker and thus the secret token is compromised. &lt;br /&gt;
&lt;br /&gt;
* Active reconfirmation from the user, in the form of re-authentication, CAPTCHA input, etc. can also protect against CSRF. &lt;br /&gt;
&lt;br /&gt;
Generally, it is recommended to use built-in or existing CSRF implementations for CSRF Protection. OWASP also advises to research if the framework used in your project has an option to achieve CSRF Protection, since many Frameworks have built-in implementations for these types of attacks. &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://owasp.org/www-community/attacks/csrf&lt;br /&gt;
* https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html&lt;br /&gt;
* https://owasp.org/www-community/Anti_CRSF_Tokens_ASP-NET&lt;/div&gt;</summary>
		<author><name>RHaidl</name></author>
	</entry>
</feed>