<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Gerson Enriquez</title>
    <description>The latest articles on DEV Community by Gerson Enriquez (@gersonec).</description>
    <link>https://dev.to/gersonec</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F774402%2Fe6ee65a0-30d2-4178-9bd3-b7ca11f908f9.jpeg</url>
      <title>DEV Community: Gerson Enriquez</title>
      <link>https://dev.to/gersonec</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gersonec"/>
    <language>en</language>
    <item>
      <title>Web Security: Recon</title>
      <dc:creator>Gerson Enriquez</dc:creator>
      <pubDate>Wed, 31 Aug 2022 13:16:37 +0000</pubDate>
      <link>https://dev.to/gersonec/web-security-recon-1bfn</link>
      <guid>https://dev.to/gersonec/web-security-recon-1bfn</guid>
      <description>&lt;h2&gt;
  
  
  What is Web Application Recon
&lt;/h2&gt;

&lt;p&gt;Think about the &lt;a href="https://en.wikipedia.org/wiki/Money_Heist"&gt;Money Heist&lt;/a&gt; crime series; going inside the Bank of Spain is easier to say than done. The thief, first of all, has to have a specific target; why does he want to go inside? in this case, it is because he wants to steal all the money, so he has to know where the money is. Once he has a target, he must study the planimetry and the bank's floor plans to know which points he can access quickly and see all the exit routes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JsBp7UXE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/16mo2w10h9u2k6t25eh9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JsBp7UXE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/16mo2w10h9u2k6t25eh9.png" alt="Money heist cover with the Bank of Spain" width="880" height="451"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1gZCQs3T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tlca456g592u2wwm2wyz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1gZCQs3T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tlca456g592u2wwm2wyz.png" alt="A general planimetry" width="800" height="619"&gt;&lt;/a&gt;&lt;br&gt;
Unfortunately, it is not enough. The thief needs to know how the business works inside, the available roles, and who works inside. It is probably also helpful to know a bit about each of them to apply successful &lt;a href="https://en.wikipedia.org/wiki/Social_engineering_(security)"&gt;Social engineering&lt;/a&gt;.&lt;br&gt;
After having physical and intellectual knowledge about the bank, the thief can start thinking about the best strategy to go inside, the weak points, and all the alternatives. On the Web, the logic is the same, the thief, in our case, is the malicious user (the attacker), and the bank is the application.&lt;br&gt;
The Recon phase focuses on acquiring all the possible knowledge about the application, not just technical expertise but also functional; this means knowing who application users are, how the application generates revenue, for what purpose users select the application over competitors, who are the competitors, what functionality is found in the application, etc.&lt;br&gt;
In this phase, we will play the role of an attacker, and the goal will be to have our planimetry of the application, but first, let's take a brief look at the structure of modern web apps.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Structure of a Modern Web Application
&lt;/h2&gt;

&lt;p&gt;Before going deep into the Recon phase, we will see an overall overview of some fundamental technologies of a modern web application. A question comes to my mind: what happens when you type an &lt;a href="https://en.wikipedia.org/wiki/URL"&gt;URL&lt;/a&gt; into your browser?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EscQIs8s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f6386zv5c3jihjs3j9wn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EscQIs8s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f6386zv5c3jihjs3j9wn.png" alt="Search bar" width="880" height="155"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After pressing enter, the first thing the Browser has to do is translate the website name into the respective &lt;a href="https://en.wikipedia.org/wiki/IP_address"&gt;IP address&lt;/a&gt;; thanks to the &lt;a href="https://en.wikipedia.org/wiki/Domain_Name_System"&gt;DNS&lt;/a&gt; (Domain name system) process. Once the Browser knows the exact address, it's possible to search where the resource is. When the resource is found, it starts the &lt;a href="https://en.wikipedia.org/wiki/Transmission_Control_Protocol"&gt;TCP connection&lt;/a&gt; with the server, and the server responds with an HTML page that the Browser has to render. As we can see, the Web is a digital universe composed mainly of a few protocols (DNS, HTTP, URL) built over other protocols that allow computers to communicate between them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eP-lY2XO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iw22f0ve4wnuzj0n9scm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eP-lY2XO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iw22f0ve4wnuzj0n9scm.png" alt="Image description" width="880" height="1061"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The following are some technologies and standards that modern applications often use to make the client-server communication easier:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;HTTP&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview"&gt;HTTP&lt;/a&gt; is a protocol for fetching resources such as HTML documents. It is the foundation of any data exchange on the Web and it is a client-server protocol, which means requests are initiated by the recipient, usually the Web browser. A complete document is reconstructed from the different sub-documents fetched, for instance, text, layout description, images, videos, scripts, and more.&lt;/p&gt;

&lt;p&gt;HTTP means Hypertext Transfer Protocol and we can see it as a bridge between client and server. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3LOjU0Z4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xf9g0j7wghqoqqvegunr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3LOjU0Z4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xf9g0j7wghqoqqvegunr.png" alt="HTTP layers" width="880" height="631"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The fundamental principle behind the Web was that once someone somewhere made available a document, database, graphic, sound, video, it should be accessible by anyone, with any type of computer, in any country. HTTP helps to establish a common language in order to make client-server communication possible, the feature is called &lt;em&gt;format negotiation&lt;/em&gt; that allowed a client to say what sorts of data format it could handle, and allow the server to return a document in any one of them.&lt;br&gt;
Since HTTP is a &lt;strong&gt;&lt;em&gt;stateless&lt;/em&gt;&lt;/strong&gt; protocol, each request is independent, and we have to pass all the information needed by the server in every request. Nevertheless, it's possible to have some session states thanks to HTTP Cookies. Cookies are set by the server and handled by the browser and allow users to have the authorization to access protected resources.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--u-aibLWJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oloataxr9itiobwl5yt2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--u-aibLWJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oloataxr9itiobwl5yt2.png" alt="HTTP Request" width="880" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;REST APIs&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Representational_state_transfer"&gt;REST&lt;/a&gt; stands for Representational State Transfer, which is a fancy way of defining an API.&lt;br&gt;
With REST APIs we will have as an outcome an interface of all apis that the application makes available.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--n2obacPA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qitalijgzpj5gdzj2yvp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--n2obacPA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qitalijgzpj5gdzj2yvp.png" alt="REST APIs Swagger interface" width="843" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The server response is usually in a JSON format.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;JSON&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/JSON"&gt;JSON&lt;/a&gt;stands for Javascript Object Notation, which replaced XML as the most used format to represent information between client and server.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kT-_UPKx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3jbl08ry1jgla95ruh3w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kT-_UPKx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3jbl08ry1jgla95ruh3w.png" alt="JSON format" width="880" height="709"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These are the most common technologies used on the Web, followed by Javascript, the Browser language, and SPA frameworks like React, Vue, and Angular.&lt;br&gt;
Now we can go deep into the central part of the article, where we will look at how we can create our planimetry of the application and understand how it works.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mapping the Application
&lt;/h2&gt;

&lt;p&gt;As we said at the beginning, we have to study the target before going inside the bank or the application. We need to map the application; this means knowing all the possible paths, understanding what kind of payload the APIs accept, etc.&lt;br&gt;
Here we see some common practical techniques to acquire that kind of knowledge.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- ENUMERATING CONTENT AND FUNCTIONALITY&lt;/strong&gt;&lt;br&gt;
In a typical application, most content and functionality can be identified via manual browsing, so starting the flow from the main initial page, then walking through the application following every link. This was the basic approach. There are also automatic tools that allow us to do &lt;a href="https://en.wikipedia.org/wiki/Web_crawler"&gt;Web Crawling&lt;/a&gt;. Unfortunately, these kinds of tools are great for discovering public paths of the application but not so well for discovering the kind of routes that are protected.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0_J06Pbd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s46cp51jlkioth2j12n3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0_J06Pbd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s46cp51jlkioth2j12n3.png" alt="Web crawling" width="880" height="807"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The most effective approach is a combination of both; it is called &lt;strong&gt;user-directed spidering&lt;/strong&gt;, which means walking through the application in a usual way but &lt;strong&gt;intercepting&lt;/strong&gt; all the network calls with the help of an automatic tool. &lt;a href="https://portswigger.net/burp/communitydownload"&gt;Burp suite&lt;/a&gt; can help with this; it has a Proxy tab where we can put the intercept feature on.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OGTPOEjf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/37nlpbs73y8qczqgb9wo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OGTPOEjf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/37nlpbs73y8qczqgb9wo.png" alt="Image description" width="880" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With user-directed spidering, the user can simply log in to the application using his browser, and the proxy/spider tool picks up the resulting session and identifies all the additional content now available to the user.&lt;br&gt;
It is also common for applications to contain content and functionality that is not directly linked to or reachable from the main visible content. A common example is functionality that has been implemented for testing or debugging purposes and has never been removed. &lt;br&gt;
The application can also present different functionality to different categories of users (anonymous, authenticated, and administrators).&lt;/p&gt;

&lt;p&gt;Often, rather than list and map all the possible pages, is more useful map the application through his functionalities. By identifying these, you can better understand the expectations and assumptions of the application's developers when implementing the functions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YddS0-G6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ho8c3czfa3xrjghrbvtj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YddS0-G6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ho8c3czfa3xrjghrbvtj.png" alt="Functionalities map" width="880" height="627"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At this step, we know, more or less, how the application is structured, what APIs are called and what are the possible paths. The next step focuses on the application's functionality and reveals possible vulnerabilities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- ANALYZING THE APPLICATION&lt;/strong&gt;&lt;br&gt;
Enumerating as much of the application's content as possible is only one element of the mapping process. Equally important is the task of analyzing the application's functionality, behaviour, and technologies employed to identify the key attack surfaces exposes and to begin formulating an approach to probing the application for exploitable vulnerabilities. Here are some key areas to investigate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The app core functionality: the actions that can be leveraged to perform when used as intended.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Error messages, admin functions and the use of redirects.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The core security mechanisms: session state, access controls, and authentication mechanisms with the supporting logic (user registration, password change, account recovery).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To understand what actions the application can take, it's important, first of all, to find all the possible APIs, then analyze them. When we analyze an API, since most APIs follow a REST format, as we saw before, we can understand the method of the API and its parameters. Once we know the kind of parameters it receives, we can brute force the API and try to pass a different type of params and see how the web server responds.&lt;br&gt;
The API's discovery happens in the previous phase when we navigate the application intercepting all the network calls.&lt;/p&gt;

&lt;p&gt;Now we have to analyze it: the two most common HTTP methods are GET and POST; the first one is used when we ask for a resource, and the second one is used when we send data to the server that needs to be persisted.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2z8Hzdzo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ezblk0wz97jbypdcryjh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2z8Hzdzo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ezblk0wz97jbypdcryjh.png" alt="Burp network intruder" width="880" height="654"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since every application with a public web user interface should have a login page, it's also important to understand the core security mechanism. The way the session is handle may differ. It's important to know what type of authentication scheme you are working with because many modern applications send authentication token with every request. This means if we can reverse engineer the type of authentication used and understand how the token is being attached to requests, it will be easier to analyze other API endpoints that rely on an authenticated user token.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bXTe1TWm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fl2uvz5tauqxhnxtx53y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bXTe1TWm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fl2uvz5tauqxhnxtx53y.png" alt="Mayor authentication scheme" width="880" height="283"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To recap, the recon phase focuses on acquiring expertise about the application, enumerating its content, and analyzing its functionalities and APIs. However, Recon techniques are constantly evolving, and it can be difficult to accurately determine which techniques outshine others. Because of this, you should always be on the lookout for new and interesting recon techniques.&lt;br&gt;
In the next part of this series, we will see the offense part, where we will go deep into some common attacks. See you there!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>websecurity</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Web Security: Introduction</title>
      <dc:creator>Gerson Enriquez</dc:creator>
      <pubDate>Tue, 23 Aug 2022 13:50:00 +0000</pubDate>
      <link>https://dev.to/gersonec/web-security-introduction-3dl7</link>
      <guid>https://dev.to/gersonec/web-security-introduction-3dl7</guid>
      <description>&lt;p&gt;As a frontend developer, I often focus too much on improving my skills in technologies like HTML, CSS, JS, and SPA frameworks, and it's right🙂, but it's also essential to enhance my understanding of how the browser works and, more importantly how I can enhance the security of the applications I develop.&lt;br&gt;
I was the kind of developer that always do the new React course available to be more productive on the job. In the last period, we tackled the Authentication part of the application I currently working on, discussing how to handle it. it was disheartening not to know what the best solution suggest, where to persist the token on the client side, and how to explain the differences between local storage, session storage, and what are cookies. Fortunately, I am the person that tries to fill the gap as soon as possible when there is one, so I decided to immerse myself in the topic and go deep.&lt;br&gt;
The purpose of this series about web security is to create my learning notes and fill the gap in myself and other developers as well: understand the mindset of a malicious user, discover the several kinds of attacks that can happen in a web application, and know a bit more about the browser built-in tools to mitigate attacks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Web security matters
&lt;/h2&gt;

&lt;p&gt;You often encounter headlines like "A big social network leaked login passwords" or "an attacker stole credit card information from a shopping site". Web security matters because we can avoid those kinds of things, in an insecure application, different people could be affected. It has an impact on users through stolen sensitive data, on the application through a lost of confidence from the users or worse a compromised business, and on other systems through hijacked attacks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwhbryt7affebnorlpwde.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwhbryt7affebnorlpwde.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What's in this series
&lt;/h2&gt;

&lt;p&gt;The series is divided in three parts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Reconnaissance&lt;/em&gt;&lt;/strong&gt;: when we talk about Web security, it's important to start understanding how a malicious user, an attacker, could think. The Recon phase is important because is the process to acquire knowledge about the application. Knowledge not only in a perspective way but also in a functional way: who are its users, how does the application generate revenue, what functionality is found in the application, etc.&lt;br&gt;
At the end of this process, we will gain a deep understanding of how the application works and if there could exist a possible vulnerability.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Offense&lt;/em&gt;&lt;/strong&gt;: once we recon the application and gained information about it, we can proceed with the offense phase, Where we will see some common techniques used by attackers to compromise the application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Deffense&lt;/em&gt;&lt;/strong&gt;: in this final part, we will consider significant security risks and concerns. Following our concerns, we will evaluate alternative implementations as well as mitigations that alleviate security risk. Throughout this process, we will see some useful techniques to reduce the number of vulnerabilities found in the production code.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Prerequisite Knowledge
&lt;/h2&gt;

&lt;p&gt;The series is focusing on frontend developers that want to acquire more knowledge on how to enhance the security of web applications and understand better the properties exchanged by clients and servers.&lt;br&gt;
Hence is just enough to have a basic knowledge of JS, HTML, and browser developer tools.&lt;/p&gt;

&lt;p&gt;References:&lt;br&gt;
&lt;a href="https://www.amazon.it/Web-Application-Security-Exploitation-Countermeasures/dp/1492053112/ref=sr_1_1?keywords=web+application+security&amp;amp;qid=1660740529&amp;amp;sprefix=web+application+securi%2Caps%2C113&amp;amp;sr=8-1" rel="noopener noreferrer"&gt;Web Application Security: Exploitation and Countermeasures for Modern Web Applications&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.amazon.it/Web-Application-Hackers-Handbook-Exploiting/dp/1118026470/ref=sr_1_1?keywords=the+web+application+hacker%27s+handbook&amp;amp;qid=1660740592&amp;amp;sprefix=the+web+appl%2Caps%2C84&amp;amp;sr=8-1" rel="noopener noreferrer"&gt;The Web Application Hacker's Handbook: Finding and Exploiting Security Flaws: Discovering and Exploiting Security Flaws&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://portswigger.net/web-security" rel="noopener noreferrer"&gt;Web Security Academy&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=5JJrJGZ_LjM&amp;amp;list=PL1y1iaEtjSYiiSGVlL1cHsXN_kvJOOhu-&amp;amp;index=1" rel="noopener noreferrer"&gt;Web Security, Stanford course&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://web.dev/secure/" rel="noopener noreferrer"&gt;Safe and secure, Ensure your site and your users' data is secure.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.amazon.it/Weaving-Web-Original-Ultimate-Inventor/dp/006251587X/ref=tmm_pap_swatch_0?_encoding=UTF8&amp;amp;qid=1660741250&amp;amp;sr=8-1" rel="noopener noreferrer"&gt;Weaving the Web&lt;/a&gt;&lt;/p&gt;

</description>
      <category>websecurity</category>
      <category>webdev</category>
      <category>cybersecurity</category>
    </item>
  </channel>
</rss>
