<?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: Abhinav Singwal</title>
    <description>The latest articles on DEV Community by Abhinav Singwal (@abhinavsingwal).</description>
    <link>https://dev.to/abhinavsingwal</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2914312%2F452f11ca-f061-4f95-a0f2-c76390b4e5c9.jpg</url>
      <title>DEV Community: Abhinav Singwal</title>
      <link>https://dev.to/abhinavsingwal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abhinavsingwal"/>
    <language>en</language>
    <item>
      <title>How to Find People on the Internet</title>
      <dc:creator>Abhinav Singwal</dc:creator>
      <pubDate>Sat, 25 Jul 2026 18:09:36 +0000</pubDate>
      <link>https://dev.to/abhinavsingwal/how-to-find-people-on-the-internet-490e</link>
      <guid>https://dev.to/abhinavsingwal/how-to-find-people-on-the-internet-490e</guid>
      <description>&lt;p&gt;You may know a person's name, but searching it on Google often returns hundreds of unrelated results. Sometimes you know a little more about them—their profession, company, city, or another detail—but combining that information into an effective search can still be time-consuming.&lt;/p&gt;

&lt;p&gt;That's why I built the &lt;strong&gt;People Search Tool&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxbyegxrfjldcdpnjm2at.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxbyegxrfjldcdpnjm2at.png" alt="People Search" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It helps you create targeted Google searches using just two pieces of information, making it easier to find publicly available information about a person.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is the People Search Tool?
&lt;/h2&gt;

&lt;p&gt;The People Search Tool is a free web application that helps you search for people online more efficiently.&lt;/p&gt;

&lt;p&gt;All you need to enter is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Person's Name&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A Clue or Additional Information&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The clue can be anything you already know, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Job title&lt;/li&gt;
&lt;li&gt;Company name&lt;/li&gt;
&lt;li&gt;City or country&lt;/li&gt;
&lt;li&gt;College or university&lt;/li&gt;
&lt;li&gt;Username&lt;/li&gt;
&lt;li&gt;Industry&lt;/li&gt;
&lt;li&gt;Hobby&lt;/li&gt;
&lt;li&gt;Any other identifying detail&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tool then generates multiple search queries that you can open in Google with a single click.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;

&lt;p&gt;Suppose you're looking for someone named:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Abhinav Singwal
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Clue&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Penetration Tester
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use People Search: &lt;a href="https://yogsec.github.io/People-Search/" rel="noopener noreferrer"&gt;https://yogsec.github.io/People-Search/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The tool creates multiple search queries that help you locate publicly available profiles, articles, websites, and other online information related to that person.&lt;/p&gt;

&lt;p&gt;Instead of manually trying different combinations, the tool does the work for you.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I Built This Tool
&lt;/h2&gt;

&lt;p&gt;Many people spend several minutes changing search terms, adding new keywords, and trying different websites before finding the right person.&lt;/p&gt;

&lt;p&gt;I wanted to simplify that process.&lt;/p&gt;

&lt;p&gt;With just two input fields, the People Search Tool generates multiple search queries in seconds, helping you reach relevant results faster.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who Can Use It?
&lt;/h2&gt;

&lt;p&gt;The People Search Tool is useful for anyone who needs to find publicly available information online, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recruiters searching for candidates&lt;/li&gt;
&lt;li&gt;Journalists verifying public information&lt;/li&gt;
&lt;li&gt;Students researching authors or speakers&lt;/li&gt;
&lt;li&gt;Security researchers performing OSINT&lt;/li&gt;
&lt;li&gt;Bug bounty hunters&lt;/li&gt;
&lt;li&gt;Event organizers looking for speaker profiles&lt;/li&gt;
&lt;li&gt;Anyone trying to locate a person's public online presence&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;LinkedIn - &lt;a href="https://www.linkedin.com/in/abhinavsingwal/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/abhinavsingwal/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>peoplesearch</category>
      <category>searchpeople</category>
      <category>peoplesearchengine</category>
      <category>informationgathering</category>
    </item>
    <item>
      <title>Vulnerable Login: Learn 12 Common Authentication Vulnerabilities</title>
      <dc:creator>Abhinav Singwal</dc:creator>
      <pubDate>Sat, 25 Jul 2026 03:12:13 +0000</pubDate>
      <link>https://dev.to/abhinavsingwal/vulnerable-login-learn-12-common-authentication-vulnerabilities-2m4o</link>
      <guid>https://dev.to/abhinavsingwal/vulnerable-login-learn-12-common-authentication-vulnerabilities-2m4o</guid>
      <description>&lt;p&gt;Authentication is one of the most important parts of any web application. A single mistake in a login system can expose user accounts, leak sensitive information, or even allow attackers to gain complete access to an application.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbd6a0x2rtlt8jnquzng6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbd6a0x2rtlt8jnquzng6.png" alt="Vulnerable Login" width="800" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unfortunately, many developers learn secure authentication only after discovering security issues in production.&lt;/p&gt;

&lt;p&gt;To help developers and security students understand these risks, I created &lt;strong&gt;Vulnerable Login&lt;/strong&gt;, a deliberately insecure login application that contains &lt;strong&gt;12 common authentication vulnerabilities&lt;/strong&gt; found in real-world web applications.&lt;/p&gt;

&lt;p&gt;This project is built for education only. It allows developers and penetration testers to safely explore insecure authentication mechanisms and understand how to fix them.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I Built Vulnerable Login
&lt;/h2&gt;

&lt;p&gt;Many tutorials explain authentication using only secure examples. While that is important, it doesn't show developers what insecure authentication actually looks like.&lt;/p&gt;

&lt;p&gt;Understanding vulnerable code helps developers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Identify authentication weaknesses before attackers do&lt;/li&gt;
&lt;li&gt;Learn common security mistakes&lt;/li&gt;
&lt;li&gt;Practice web application penetration testing&lt;/li&gt;
&lt;li&gt;Improve secure coding skills&lt;/li&gt;
&lt;li&gt;Understand how authentication attacks work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal of this project is to make learning authentication security practical instead of theoretical.&lt;/p&gt;




&lt;h2&gt;
  
  
  Live Demo
&lt;/h2&gt;

&lt;p&gt;You can test the vulnerable application here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://yogsec.github.io/Vulnerable-Login" rel="noopener noreferrer"&gt;https://yogsec.github.io/Vulnerable-Login&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitHub Repository:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/yogsec/Vulnerable-Login" rel="noopener noreferrer"&gt;https://github.com/yogsec/Vulnerable-Login&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; Never use this code in production. Every vulnerability is intentionally included for educational purposes.&lt;/p&gt;




&lt;h1&gt;
  
  
  Authentication Vulnerabilities Included
&lt;/h1&gt;

&lt;p&gt;The project contains twelve intentionally vulnerable authentication mechanisms.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. SQL Injection Authentication Bypass
&lt;/h2&gt;

&lt;p&gt;User input is directly inserted into SQL queries.&lt;/p&gt;

&lt;p&gt;Developers will learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why parameterized queries are important&lt;/li&gt;
&lt;li&gt;How SQL Injection bypasses authentication&lt;/li&gt;
&lt;li&gt;How prepared statements prevent attacks&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. Plaintext Password Storage
&lt;/h2&gt;

&lt;p&gt;Passwords are stored in plain text instead of being securely hashed.&lt;/p&gt;

&lt;p&gt;This demonstrates why passwords should never be stored without strong hashing algorithms such as bcrypt or Argon2.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. No Rate Limiting
&lt;/h2&gt;

&lt;p&gt;The login page allows unlimited login attempts.&lt;/p&gt;

&lt;p&gt;Students can understand how brute-force attacks become possible when no request limits exist.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. No Account Lockout
&lt;/h2&gt;

&lt;p&gt;Even after repeated failed login attempts, accounts remain accessible.&lt;/p&gt;

&lt;p&gt;This demonstrates why account lockout policies are an important security control.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Weak Passwords
&lt;/h2&gt;

&lt;p&gt;The application contains users with predictable passwords.&lt;/p&gt;

&lt;p&gt;Examples include passwords that attackers commonly try first during password guessing attacks.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Weak MD5 Password Hashing
&lt;/h2&gt;

&lt;p&gt;Passwords are hashed using MD5 without salt.&lt;/p&gt;

&lt;p&gt;Developers can understand why MD5 is no longer considered secure for password storage.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Verbose Error Messages
&lt;/h2&gt;

&lt;p&gt;Different error messages reveal whether a username exists.&lt;/p&gt;

&lt;p&gt;This small mistake provides valuable information to attackers.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. User Enumeration
&lt;/h2&gt;

&lt;p&gt;The application allows attackers to determine valid usernames.&lt;/p&gt;

&lt;p&gt;Developers can learn how consistent responses reduce information disclosure.&lt;/p&gt;




&lt;h2&gt;
  
  
  9. Session Fixation
&lt;/h2&gt;

&lt;p&gt;The session identifier is not regenerated after successful login.&lt;/p&gt;

&lt;p&gt;Students can observe how attackers may hijack authenticated sessions.&lt;/p&gt;




&lt;h2&gt;
  
  
  10. Hardcoded Credentials
&lt;/h2&gt;

&lt;p&gt;Administrative credentials are embedded directly inside the source code.&lt;/p&gt;

&lt;p&gt;This demonstrates why secrets should never be committed into repositories.&lt;/p&gt;




&lt;h2&gt;
  
  
  11. No HTTPS Protection
&lt;/h2&gt;

&lt;p&gt;Credentials are transmitted over HTTP instead of HTTPS.&lt;/p&gt;

&lt;p&gt;Developers can understand why encrypted communication is essential for protecting usernames and passwords.&lt;/p&gt;




&lt;h2&gt;
  
  
  12. CSRF Protection That Doesn't Work
&lt;/h2&gt;

&lt;p&gt;The application includes an anti-CSRF token but never validates it.&lt;/p&gt;

&lt;p&gt;This demonstrates how incomplete security implementations create a false sense of protection.&lt;/p&gt;




&lt;h1&gt;
  
  
  Who Should Use This Project?
&lt;/h1&gt;

&lt;p&gt;This repository is useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Frontend Developers&lt;/li&gt;
&lt;li&gt;Backend Developers&lt;/li&gt;
&lt;li&gt;Full Stack Developers&lt;/li&gt;
&lt;li&gt;Security Researchers&lt;/li&gt;
&lt;li&gt;Bug Bounty Hunters&lt;/li&gt;
&lt;li&gt;Penetration Testers&lt;/li&gt;
&lt;li&gt;Students Learning Cybersecurity&lt;/li&gt;
&lt;li&gt;Web Security Trainers&lt;/li&gt;
&lt;li&gt;University Instructors&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  What Developers Will Learn
&lt;/h1&gt;

&lt;p&gt;After exploring this project, you'll better understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Authentication security&lt;/li&gt;
&lt;li&gt;Login security best practices&lt;/li&gt;
&lt;li&gt;Password storage&lt;/li&gt;
&lt;li&gt;Session management&lt;/li&gt;
&lt;li&gt;Secure authentication design&lt;/li&gt;
&lt;li&gt;Brute-force protection&lt;/li&gt;
&lt;li&gt;SQL Injection prevention&lt;/li&gt;
&lt;li&gt;CSRF mitigation&lt;/li&gt;
&lt;li&gt;User enumeration prevention&lt;/li&gt;
&lt;li&gt;Secure coding practices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These concepts are directly applicable when building secure web applications.&lt;/p&gt;

</description>
      <category>login</category>
      <category>authentication</category>
      <category>loginform</category>
      <category>auth</category>
    </item>
    <item>
      <title>API Pentesting Tools: A Complete Open-Source Collection for Learning and Bug Hunting</title>
      <dc:creator>Abhinav Singwal</dc:creator>
      <pubDate>Fri, 24 Jul 2026 17:38:02 +0000</pubDate>
      <link>https://dev.to/abhinavsingwal/api-pentesting-tools-a-complete-open-source-collection-for-learning-and-bug-hunting-3ndd</link>
      <guid>https://dev.to/abhinavsingwal/api-pentesting-tools-a-complete-open-source-collection-for-learning-and-bug-hunting-3ndd</guid>
      <description>&lt;p&gt;If you're learning &lt;strong&gt;API security&lt;/strong&gt; or participating in &lt;strong&gt;bug bounty programs&lt;/strong&gt;, you've probably faced this problem:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Which tool should I use for API reconnaissance? What about authorization testing? Is there a good tool for GraphQL? Which fuzzing tool is best?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead of searching through dozens of blog posts and GitHub repositories, I decided to create one place where everything is organized.&lt;/p&gt;

&lt;p&gt;That's why I built &lt;strong&gt;API Pentesting Tools&lt;/strong&gt;, an open-source repository that collects useful tools for every stage of API security testing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyqv8vk0z7wk5332ucvjy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyqv8vk0z7wk5332ucvjy.png" alt=" API Pentesting Tools, API Security Tools, API Penetration Testing, API Testing Tools " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitHub:&lt;br&gt;
&lt;a href="https://github.com/yogsec/API-Pentesting-Tools" rel="noopener noreferrer"&gt;https://github.com/yogsec/API-Pentesting-Tools&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I Created This Repository
&lt;/h2&gt;

&lt;p&gt;When I started learning API penetration testing, I spent more time searching for tools than actually testing APIs.&lt;/p&gt;

&lt;p&gt;Every article listed different tools. Some were outdated, while others only covered one part of API testing.&lt;/p&gt;

&lt;p&gt;I wanted a repository where students, beginners, and bug bounty hunters could quickly find the right tool without wasting time.&lt;/p&gt;

&lt;p&gt;Today, this repository is helping people discover API security tools from one central place and is ranking &lt;strong&gt;#2 on Google&lt;/strong&gt; for the search term &lt;strong&gt;"API Pentesting Tools."&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  What You'll Find
&lt;/h1&gt;

&lt;p&gt;The repository is divided into different API testing categories.&lt;/p&gt;

&lt;h2&gt;
  
  
  API Reconnaissance
&lt;/h2&gt;

&lt;p&gt;Before testing an API, you need to understand its attack surface.&lt;/p&gt;

&lt;p&gt;This section includes tools for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API endpoint discovery&lt;/li&gt;
&lt;li&gt;Subdomain enumeration&lt;/li&gt;
&lt;li&gt;Swagger analysis&lt;/li&gt;
&lt;li&gt;GraphQL schema discovery&lt;/li&gt;
&lt;li&gt;Hidden endpoint discovery
...&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Who Should Use This Repository?
&lt;/h1&gt;

&lt;p&gt;This project is useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Students learning API Security&lt;/li&gt;
&lt;li&gt;Bug Bounty Hunters&lt;/li&gt;
&lt;li&gt;Penetration Testers&lt;/li&gt;
&lt;li&gt;Security Researchers&lt;/li&gt;
&lt;li&gt;API Developers&lt;/li&gt;
&lt;li&gt;Anyone interested in Application Security&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether you're preparing for interviews, solving API labs, or hunting vulnerabilities on bug bounty platforms, this repository can save you time.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Bookmark This Repository?
&lt;/h1&gt;

&lt;p&gt;Instead of remembering hundreds of tool names, you can use this repository as a quick reference.&lt;/p&gt;

&lt;p&gt;It is regularly updated with useful tools so you can easily discover new resources for API penetration testing.&lt;/p&gt;




&lt;p&gt;Repository:&lt;br&gt;
&lt;a href="https://github.com/yogsec/API-Pentesting-Tools" rel="noopener noreferrer"&gt;https://github.com/yogsec/API-Pentesting-Tools&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;LinkTree: &lt;a href="https://linktr.ee/abhinavsingwal" rel="noopener noreferrer"&gt;https://linktr.ee/abhinavsingwal&lt;/a&gt;&lt;/p&gt;

</description>
      <category>apipentesting</category>
      <category>apipentestingtools</category>
      <category>apisecurity</category>
      <category>apisec</category>
    </item>
    <item>
      <title>CVE-2026-56844: Veeam Security Update You Should Know About</title>
      <dc:creator>Abhinav Singwal</dc:creator>
      <pubDate>Thu, 23 Jul 2026 03:19:01 +0000</pubDate>
      <link>https://dev.to/abhinavsingwal/cve-2026-56844-veeam-security-update-you-should-know-about-5749</link>
      <guid>https://dev.to/abhinavsingwal/cve-2026-56844-veeam-security-update-you-should-know-about-5749</guid>
      <description>&lt;p&gt;CVE-2026-56844 is a privilege escalation vulnerability found in the Veeam Updater component of the Veeam Software Appliance. The flaw enables a local user with existing high privileges to elevate further and gain root-level access to the underlying operating system.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa08uk6qj16ffvmxaf0z2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa08uk6qj16ffvmxaf0z2.png" alt="CVE-2026-56844" width="738" height="222"&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Root Cause
&lt;/h3&gt;

&lt;p&gt;The vulnerability is classified as &lt;strong&gt;CWE-22: Path Traversal&lt;/strong&gt;. This indicates that the root cause lies in insufficient input validation when processing pathnames. The updater component fails to properly restrict directory traversal sequences, allowing an attacker to manipulate file paths and access restricted locations on the filesystem.&lt;/p&gt;

&lt;p&gt;The technical implementation of this flaw involves improper privilege management within the updater service, where insufficient validation occurs during the update process. This represents a classic case of privilege escalation through insecure component design—legitimate functionality becomes a vector for unauthorized privilege elevation.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  CVSS
&lt;/h3&gt;

&lt;p&gt;The key nuance is the &lt;code&gt;PR:H&lt;/code&gt; (Privileges Required: High) metric—an attacker already needs elevated access. This vulnerability enables &lt;strong&gt;further escalation&lt;/strong&gt; from high privileges to full root control.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Affected Products and Versions
&lt;/h3&gt;

&lt;p&gt;The vulnerability affects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Veeam Software Appliance (Linux-based Veeam Backup &amp;amp; Replication server)&lt;/li&gt;
&lt;li&gt;Veeam Infrastructure Appliance

&lt;strong&gt;Not affected:&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Windows-based Veeam Backup &amp;amp; Replication servers (though remote Linux components they manage may still be vulnerable) &lt;/li&gt;
&lt;li&gt;Veeam Backup &amp;amp; Replication version 13.0.2 is listed as unaffected 

&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Exploitation
&lt;/h3&gt;

&lt;p&gt;An attacker can exploit this weakness by:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Crafting malicious update packages&lt;/li&gt;
&lt;li&gt;Manipulating existing update mechanisms&lt;/li&gt;
&lt;li&gt;Leveraging the updater's legitimate administrative capabilities for unauthorized system access

Once root access is obtained, an attacker can:&lt;/li&gt;
&lt;li&gt;Modify system files&lt;/li&gt;
&lt;li&gt;Install persistent backdoors&lt;/li&gt;
&lt;li&gt;Access sensitive backup data&lt;/li&gt;
&lt;li&gt;Manipulate backup operations&lt;/li&gt;
&lt;li&gt;Potentially compromise the entire backup infrastructure

### Mitigation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The patch is included in &lt;strong&gt;Veeam Updater version 12.3.0.65&lt;/strong&gt;. For systems that cannot reach Veeam's update repository, manual installation is required.&lt;/p&gt;

&lt;p&gt;LinkTree: &lt;a href="https://linktr.ee/abhinavsingwal" rel="noopener noreferrer"&gt;https://linktr.ee/abhinavsingwal&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cve202656844</category>
      <category>veeam</category>
      <category>veeamupdater</category>
      <category>cve2026</category>
    </item>
    <item>
      <title>This guide explains why shopping website security matters, how these vulnerabilities affect online stores, and how website owners can identify and fix them before attackers do. Ideal for e-commerce businesses, developers, and security professionals.</title>
      <dc:creator>Abhinav Singwal</dc:creator>
      <pubDate>Thu, 23 Jul 2026 03:08:36 +0000</pubDate>
      <link>https://dev.to/abhinavsingwal/this-guide-explains-why-shopping-website-security-matters-how-these-vulnerabilities-affect-online-4ik4</link>
      <guid>https://dev.to/abhinavsingwal/this-guide-explains-why-shopping-website-security-matters-how-these-vulnerabilities-affect-online-4ik4</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/abhinavsingwal/is-your-shopping-website-secure-common-security-issues-every-e-commerce-business-should-check-2cn5" class="crayons-story__hidden-navigation-link"&gt;Is Your Shopping Website Secure? Common Security Issues Every E-commerce Business Should Check&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/abhinavsingwal" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2914312%2F452f11ca-f061-4f95-a0f2-c76390b4e5c9.jpg" alt="abhinavsingwal profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/abhinavsingwal" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Abhinav Singwal
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Abhinav Singwal
                
              
              &lt;div id="story-author-preview-content-4210222" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/abhinavsingwal" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2914312%2F452f11ca-f061-4f95-a0f2-c76390b4e5c9.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Abhinav Singwal&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/abhinavsingwal/is-your-shopping-website-secure-common-security-issues-every-e-commerce-business-should-check-2cn5" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jul 23&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/abhinavsingwal/is-your-shopping-website-secure-common-security-issues-every-e-commerce-business-should-check-2cn5" id="article-link-4210222"&gt;
          Is Your Shopping Website Secure? Common Security Issues Every E-commerce Business Should Check
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/cybersecurity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;cybersecurity&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/business"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;business&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ecommerce"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ecommerce&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/abhinavsingwal/is-your-shopping-website-secure-common-security-issues-every-e-commerce-business-should-check-2cn5" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;5&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/abhinavsingwal/is-your-shopping-website-secure-common-security-issues-every-e-commerce-business-should-check-2cn5#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Is Your Shopping Website Secure? Common Security Issues Every E-commerce Business Should Check</title>
      <dc:creator>Abhinav Singwal</dc:creator>
      <pubDate>Thu, 23 Jul 2026 03:07:38 +0000</pubDate>
      <link>https://dev.to/abhinavsingwal/is-your-shopping-website-secure-common-security-issues-every-e-commerce-business-should-check-2cn5</link>
      <guid>https://dev.to/abhinavsingwal/is-your-shopping-website-secure-common-security-issues-every-e-commerce-business-should-check-2cn5</guid>
      <description>&lt;p&gt;Running an online store is about more than selling products. Customers trust your website with their personal information, addresses, payment details, and orders. Even a small security issue can lead to data leaks, financial loss, or damage to your business reputation.&lt;/p&gt;

&lt;p&gt;Many website owners believe their online store is secure because it works correctly. However, a website can look perfect while still containing hidden security problems that attackers can abuse.&lt;/p&gt;

&lt;p&gt;To help people understand these risks, I created &lt;strong&gt;Vulnerable Shopping Cart&lt;/strong&gt;, a deliberately insecure e-commerce application built for cybersecurity learning and security testing.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd4ou5zkasuec6506q9iq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd4ou5zkasuec6506q9iq.png" alt="Vulnerable Shopping Website" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;br&gt;
GitHub Repository: &lt;a href="https://github.com/yogsec/Vulnerable-shopping-Cart" rel="noopener noreferrer"&gt;https://github.com/yogsec/Vulnerable-shopping-Cart&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vulnerable Cart Demo: &lt;a href="https://yogsec.github.io/Vulnerable-shopping-Cart/" rel="noopener noreferrer"&gt;https://yogsec.github.io/Vulnerable-shopping-Cart/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This project demonstrates common vulnerabilities that are often found in shopping websites. It is designed for educational purposes so developers, students, and business owners can understand what these issues look like and why they should be fixed.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Security Issues in Shopping Websites
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Cross-Site Scripting (XSS)
&lt;/h3&gt;

&lt;p&gt;An attacker may inject malicious code into your website. This can allow them to steal user sessions, display fake content, or perform actions on behalf of customers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Insecure Direct Object Reference (IDOR)
&lt;/h3&gt;

&lt;p&gt;If access control is not properly implemented, one customer may be able to access another customer's shopping cart, profile, or order information.&lt;/p&gt;

&lt;h3&gt;
  
  
  Price Manipulation
&lt;/h3&gt;

&lt;p&gt;Some websites rely on values stored in the browser. An attacker may change the product quantity or price before completing a purchase.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gift Card and Coupon Abuse
&lt;/h3&gt;

&lt;p&gt;If gift cards or coupons are validated only on the client side, users may reuse discounts or increase gift card balances without authorization.&lt;/p&gt;

&lt;h3&gt;
  
  
  Session Fixation
&lt;/h3&gt;

&lt;p&gt;If session identifiers are predictable or accepted from URLs, attackers may hijack customer accounts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Open Redirect
&lt;/h3&gt;

&lt;p&gt;Improper redirect validation can send users to malicious websites that imitate your business.&lt;/p&gt;

&lt;h3&gt;
  
  
  Missing CSRF Protection
&lt;/h3&gt;

&lt;p&gt;Without proper request validation, attackers may force logged-in users to perform actions without their knowledge.&lt;/p&gt;

&lt;h3&gt;
  
  
  Missing Security Headers
&lt;/h3&gt;

&lt;p&gt;Headers such as Content Security Policy (CSP) and X-Frame-Options help protect websites from several browser-based attacks. Missing them increases risk.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sensitive Data Exposure
&lt;/h3&gt;

&lt;p&gt;Customer information, payment details, or internal application data should never be exposed to users or stored insecurely.&lt;/p&gt;

&lt;h3&gt;
  
  
  Business Logic Flaws
&lt;/h3&gt;

&lt;p&gt;Not every vulnerability is technical. Sometimes attackers abuse the normal workflow of a website, such as applying discounts multiple times, bypassing shipping rules, or earning unlimited loyalty points.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;A successful attack can result in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customer data leaks&lt;/li&gt;
&lt;li&gt;Financial losses&lt;/li&gt;
&lt;li&gt;Fraudulent orders&lt;/li&gt;
&lt;li&gt;Account takeover&lt;/li&gt;
&lt;li&gt;Loss of customer trust&lt;/li&gt;
&lt;li&gt;Damage to your brand&lt;/li&gt;
&lt;li&gt;Legal and compliance issues&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finding these issues early is much cheaper than dealing with the consequences of a security breach.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Learn in a Safe Environment
&lt;/h2&gt;

&lt;p&gt;The Vulnerable Shopping Cart includes intentionally vulnerable examples so security professionals and developers can safely learn how these problems occur and how they should be fixed. It is meant for education only and should never be deployed in a production environment.&lt;/p&gt;

&lt;p&gt;Explore the project:&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/yogsec/Vulnerable-shopping-Cart" rel="noopener noreferrer"&gt;https://github.com/yogsec/Vulnerable-shopping-Cart&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Live Demo: &lt;a href="https://yogsec.github.io/Vulnerable-shopping-Cart/" rel="noopener noreferrer"&gt;https://yogsec.github.io/Vulnerable-shopping-Cart/&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Need Your Website Tested?
&lt;/h2&gt;

&lt;p&gt;I help businesses identify security vulnerabilities in their websites and provide a clear report with findings and recommendations. My website security assessment starts at &lt;strong&gt;$20&lt;/strong&gt;, making it affordable for startups, small businesses, and e-commerce website owners who want to improve their security before attackers find the issues.&lt;/p&gt;

&lt;p&gt;If you would like your website tested, feel free to contact me.&lt;/p&gt;

&lt;p&gt;Email: &lt;a href="mailto:abhinavsingwal@gmail.com"&gt;abhinavsingwal@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Linktree: &lt;a href="https://linktr.ee/abhinavsingwal" rel="noopener noreferrer"&gt;https://linktr.ee/abhinavsingwal&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>cybersecurity</category>
      <category>business</category>
      <category>ecommerce</category>
    </item>
    <item>
      <title>When a Phone Number Field Accepts Negative Numbers: A Look at Input Validation Failures</title>
      <dc:creator>Abhinav Singwal</dc:creator>
      <pubDate>Sat, 13 Jun 2026 10:03:33 +0000</pubDate>
      <link>https://dev.to/abhinavsingwal/when-a-phone-number-field-accepts-negative-numbers-a-look-at-input-validation-failures-5931</link>
      <guid>https://dev.to/abhinavsingwal/when-a-phone-number-field-accepts-negative-numbers-a-look-at-input-validation-failures-5931</guid>
      <description>&lt;p&gt;During a recent web application assessment, I came across an interesting issue that demonstrates why input validation remains one of the most important aspects of application security.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F4ondc5t8q11kcmr76nv3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F4ondc5t8q11kcmr76nv3.png" alt="Contact Form Issue"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Observation
&lt;/h2&gt;

&lt;p&gt;A phone number field was expected to accept valid telephone numbers. However, while testing the application, I discovered that the field accepted negative numeric values such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-27
-90
-137
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These values were processed and accepted by the application without any apparent restrictions.&lt;/p&gt;

&lt;p&gt;At first glance, this may appear to be a minor issue. After all, accepting an invalid phone number does not immediately result in account takeover or remote code execution. However, findings like this often reveal deeper problems in the application's validation logic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does This Matter?
&lt;/h2&gt;

&lt;p&gt;Applications rely on user-supplied data for business operations, reporting, notifications, integrations, and analytics. When invalid data is allowed into a system, it can create unexpected behavior throughout the application.&lt;/p&gt;

&lt;p&gt;Some potential impacts include:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Data Integrity Issues
&lt;/h3&gt;

&lt;p&gt;Phone number fields are designed to store contact information. Allowing invalid values can pollute databases and reduce the reliability of stored data.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Business Logic Problems
&lt;/h3&gt;

&lt;p&gt;Many workflows depend on valid phone numbers, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SMS verification&lt;/li&gt;
&lt;li&gt;Customer communication&lt;/li&gt;
&lt;li&gt;OTP delivery&lt;/li&gt;
&lt;li&gt;Account recovery processes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Improper validation can interfere with these workflows and lead to unexpected application behavior.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Input Validation Gaps
&lt;/h3&gt;

&lt;p&gt;When one field lacks proper validation, it often indicates that similar weaknesses may exist elsewhere in the application.&lt;/p&gt;

&lt;p&gt;Security testers frequently use small validation failures as indicators that broader validation issues may be present.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Downstream Processing Risks
&lt;/h3&gt;

&lt;p&gt;Applications often share data with external systems such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CRM platforms&lt;/li&gt;
&lt;li&gt;Marketing tools&lt;/li&gt;
&lt;li&gt;Reporting systems&lt;/li&gt;
&lt;li&gt;Third-party APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unexpected values can cause failures, exceptions, or inaccurate reporting within these connected systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Client-Side Validation Is Not Enough
&lt;/h2&gt;

&lt;p&gt;Many applications rely heavily on frontend validation using JavaScript. While this improves user experience, it should never be considered a security control.&lt;/p&gt;

&lt;p&gt;Attackers can easily bypass client-side restrictions using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Browser developer tools&lt;/li&gt;
&lt;li&gt;Proxy tools&lt;/li&gt;
&lt;li&gt;Modified requests&lt;/li&gt;
&lt;li&gt;Automated scripts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All validation rules must be enforced on the server side before data is accepted and stored.&lt;/p&gt;

&lt;h2&gt;
  
  
  Recommended Mitigations
&lt;/h2&gt;

&lt;p&gt;To prevent issues like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Validate all inputs on the server side.&lt;/li&gt;
&lt;li&gt;Enforce strict phone number formats.&lt;/li&gt;
&lt;li&gt;Reject unexpected characters and negative values.&lt;/li&gt;
&lt;li&gt;Implement length restrictions.&lt;/li&gt;
&lt;li&gt;Use allowlists instead of blocklists whenever possible.&lt;/li&gt;
&lt;li&gt;Perform consistent validation across all application interfaces and APIs.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>contactform</category>
      <category>form</category>
      <category>htmlform</category>
      <category>phoneinput</category>
    </item>
    <item>
      <title>Business Logic Vulnerability: When Multiple Accounts Can Share the Same Payout Details</title>
      <dc:creator>Abhinav Singwal</dc:creator>
      <pubDate>Mon, 08 Jun 2026 07:02:38 +0000</pubDate>
      <link>https://dev.to/abhinavsingwal/business-logic-vulnerability-when-multiple-accounts-can-share-the-same-payout-details-3384</link>
      <guid>https://dev.to/abhinavsingwal/business-logic-vulnerability-when-multiple-accounts-can-share-the-same-payout-details-3384</guid>
      <description>&lt;p&gt;Business logic vulnerabilities are often overlooked because they do not always involve classic security issues such as SQL Injection, Cross-Site Scripting, or Remote Code Execution. Instead, they arise when an application's workflow allows actions that conflict with the intended business rules.&lt;/p&gt;

&lt;p&gt;One interesting scenario involves payout settings.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Scenario
&lt;/h2&gt;

&lt;p&gt;Imagine a platform that allows users to receive payments through bank accounts, gift cards, cryptocurrency wallets, or other payout methods.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fjidglji9brbpefkqbh9m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fjidglji9brbpefkqbh9m.png" alt="Business Logic Issue in Payout System" width="296" height="567"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A user can navigate to their profile and configure payout information that will be used to receive future rewards or payments.&lt;/p&gt;

&lt;p&gt;Now consider the following workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;User A registers an account.&lt;/li&gt;
&lt;li&gt;User A adds a bank account and payout email.&lt;/li&gt;
&lt;li&gt;The platform saves the information successfully.&lt;/li&gt;
&lt;li&gt;User B registers a completely different account.&lt;/li&gt;
&lt;li&gt;User B enters the exact same payout information.&lt;/li&gt;
&lt;li&gt;The platform accepts the details without any validation or review.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As a result, multiple accounts become associated with the same payout destination.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Is This Interesting?
&lt;/h2&gt;

&lt;p&gt;At first glance, this may appear harmless. However, from a business logic perspective, payout information is often treated as an identifier that links financial transactions to a specific user.&lt;/p&gt;

&lt;p&gt;Allowing the same payout destination to be associated with multiple accounts can create challenges for fraud detection, abuse prevention, and account attribution.&lt;/p&gt;

&lt;p&gt;The issue is not necessarily the duplicate data itself. The real concern is how that data may be used by other business processes within the application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Potential Risks
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Multi-Account Abuse
&lt;/h3&gt;

&lt;p&gt;Many platforms attempt to limit abuse by restricting rewards, promotions, referrals, or bonuses to one user.&lt;/p&gt;

&lt;p&gt;If the same payout destination can be reused indefinitely, a single individual may create multiple accounts while still directing all payments to a single destination.&lt;/p&gt;

&lt;h3&gt;
  
  
  Referral Program Abuse
&lt;/h3&gt;

&lt;p&gt;Referral systems frequently assume that each participant represents a unique individual.&lt;/p&gt;

&lt;p&gt;When payout destinations are not validated, an attacker may create multiple accounts and funnel rewards to the same financial endpoint.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fraud Investigation Challenges
&lt;/h3&gt;

&lt;p&gt;Security and fraud teams often rely on payout information to identify relationships between accounts.&lt;/p&gt;

&lt;p&gt;If duplicate payout information is allowed without monitoring or review, suspicious activity may become harder to investigate.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ban Evasion
&lt;/h3&gt;

&lt;p&gt;Platforms sometimes ban accounts involved in abuse or policy violations.&lt;/p&gt;

&lt;p&gt;If payout information is not used as part of anti-abuse controls, a banned user may create additional accounts while continuing to use the same payout destination.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Security Researchers Can Test This
&lt;/h2&gt;

&lt;p&gt;When assessing payout systems, researchers can examine the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can multiple accounts register the same bank account?&lt;/li&gt;
&lt;li&gt;Can multiple accounts use the same payout email address?&lt;/li&gt;
&lt;li&gt;Are duplicate cryptocurrency wallet addresses accepted?&lt;/li&gt;
&lt;li&gt;Is there any verification process for payout ownership?&lt;/li&gt;
&lt;li&gt;Does the application generate warnings when duplicates are detected?&lt;/li&gt;
&lt;li&gt;Are duplicate payout destinations reviewed by fraud systems?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The objective is not merely to identify duplicate data acceptance but to understand how the platform's business processes interact with that data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example Test Flow
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Create Account A.&lt;/li&gt;
&lt;li&gt;Add a payout destination.&lt;/li&gt;
&lt;li&gt;Create Account B.&lt;/li&gt;
&lt;li&gt;Add the same payout destination.&lt;/li&gt;
&lt;li&gt;Observe whether the platform:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Rejects the entry.&lt;/li&gt;
&lt;li&gt;Generates a warning.&lt;/li&gt;
&lt;li&gt;Requires additional verification.&lt;/li&gt;
&lt;li&gt;Accepts the data silently.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Documenting these behaviors can help identify weaknesses in fraud prevention and account attribution mechanisms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security Recommendations
&lt;/h2&gt;

&lt;p&gt;Organizations can reduce risk by implementing several controls:&lt;/p&gt;

&lt;h3&gt;
  
  
  Server-Side Uniqueness Checks
&lt;/h3&gt;

&lt;p&gt;Validate whether a payout destination already exists before saving it to another account.&lt;/p&gt;

</description>
      <category>businesslogicvulnerability</category>
      <category>cybersecurity</category>
      <category>payoutbugs</category>
      <category>owasptop10</category>
    </item>
    <item>
      <title>How I Find Excessive Data Exposure in APIs</title>
      <dc:creator>Abhinav Singwal</dc:creator>
      <pubDate>Sat, 06 Jun 2026 09:22:57 +0000</pubDate>
      <link>https://dev.to/abhinavsingwal/how-i-find-excessive-data-exposure-in-apis-3nab</link>
      <guid>https://dev.to/abhinavsingwal/how-i-find-excessive-data-exposure-in-apis-3nab</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.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%2F1jifoqbj9rf1t34fxxal.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F1jifoqbj9rf1t34fxxal.png" alt="Excessive Data Exposure in APIs"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I was testing a fintech app's "View Profile" feature. The mobile app showed my name and avatar. Burp Suite showed something else entirely:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"John Doe"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"avatar"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/images/avatar.jpg"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"email"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"john@example.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"phone"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"+1234567890"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"password_hash"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"reset_token"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"a7b3f9e2c4d1g6h8j9k0l"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"internal_risk_score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"admin_notes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Flagged for unusual activity"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"last_login_ip"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"192.168.1.100"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The app only showed &lt;code&gt;name&lt;/code&gt; and &lt;code&gt;avatar&lt;/code&gt;. The API returned &lt;strong&gt;everything&lt;/strong&gt; about me - including my password hash and an active reset token.&lt;/p&gt;

&lt;p&gt;That was my first &lt;strong&gt;Excessive Data Exposure&lt;/strong&gt; bounty. $1,500 for reading my own data.&lt;/p&gt;

&lt;p&gt;Let me show you how to find these everywhere.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Even Is Excessive Data Exposure?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Simple definition:&lt;/strong&gt; The API gives you more data than you need to see.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technical definition:&lt;/strong&gt; The backend queries &lt;code&gt;SELECT * FROM users&lt;/code&gt; and sends the entire database row to the frontend, even though the UI only displays 2 of the 15 columns.&lt;/p&gt;

&lt;p&gt;The scary part? You don't need broken authentication. You don't need SQL injection. You just need to &lt;strong&gt;look at the raw API response&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The 9 Endpoints Where I Always Find This
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. User Profile Endpoints
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;GET /api/users/{id}&lt;/code&gt; or &lt;code&gt;GET /api/users/me&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to look for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;email&lt;/code&gt;, &lt;code&gt;phone&lt;/code&gt;, &lt;code&gt;address&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;password_hash&lt;/code&gt;, &lt;code&gt;salt&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;reset_token&lt;/code&gt;, &lt;code&gt;verify_token&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;two_fa_secret&lt;/code&gt;, &lt;code&gt;backup_codes&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;api_keys&lt;/code&gt;, &lt;code&gt;session_tokens&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Bug bounty example:&lt;/strong&gt; I once found &lt;code&gt;stripe_customer_id&lt;/code&gt; and &lt;code&gt;subscription_billing_cycle&lt;/code&gt; on a &lt;code&gt;/me&lt;/code&gt; endpoint. The company paid $500 because they considered it internal architecture exposure.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Search Endpoints
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;GET /api/search?q=john&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to look for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full emails instead of truncated &lt;code&gt;j***@example.com&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Exact timestamps of last login&lt;/li&gt;
&lt;li&gt;Internal user IDs used for other API calls&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pro tip:&lt;/strong&gt; Even if you can't IDOR to other users, search your own email. The API might return extra fields on your own result that shouldn't be visible to you.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Registration / Signup Responses
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;POST /api/register&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to look for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your password echoed back in plaintext (yes, this happens)&lt;/li&gt;
&lt;li&gt;Your session token in the response body&lt;/li&gt;
&lt;li&gt;Internal account flags like &lt;code&gt;"is_verified": false&lt;/code&gt;, &lt;code&gt;"requires_review": true&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Order History
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;GET /api/orders/12345&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to look for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Credit card last4, expiry, billing zip&lt;/li&gt;
&lt;li&gt;Full shipping address&lt;/li&gt;
&lt;li&gt;Internal cost vs retail price (business logic exposure)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;refund_eligibility&lt;/code&gt; flags&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. File Upload Metadata
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;POST /api/upload&lt;/code&gt; → returns &lt;code&gt;file_id&lt;/code&gt; → &lt;code&gt;GET /api/files/{file_id}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to look for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Internal S3 bucket paths (exposes infrastructure)&lt;/li&gt;
&lt;li&gt;Original filenames (could contain PII like &lt;code&gt;resume_ssn_123.pdf&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Uploader's IP address and user agent&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;file_permissions&lt;/code&gt; array showing who can access&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6. GraphQL Endpoints (The Jackpot)
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;POST /graphql&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to do:&lt;/strong&gt; Request fields you shouldn't see even on your own account:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight graphql"&gt;&lt;code&gt;&lt;span class="k"&gt;query&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;me&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;password_hash&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="c"&gt;# ← try it&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;reset_token&lt;/span&gt;&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="c"&gt;# ← try it&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;internal_notes&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c"&gt;# ← try it&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;admin_flags&lt;/span&gt;&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="c"&gt;# ← try it&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Real bounty:&lt;/strong&gt; A bug hunter found &lt;code&gt;credit_card&lt;/code&gt; and &lt;code&gt;ssn&lt;/code&gt; fields exposed on the &lt;code&gt;/me&lt;/code&gt; query of a major credit bureau. $7,500 bounty.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Analytics &amp;amp; Dashboard Endpoints
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;GET /api/dashboard/stats&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to look for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Other users' emails or IPs in event logs&lt;/li&gt;
&lt;li&gt;Database connection strings&lt;/li&gt;
&lt;li&gt;Debug arrays containing full request/response objects&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  8. Export / Download Endpoints
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;GET /api/export/users.csv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to look for:&lt;/strong&gt; If you can access this endpoint at all (auth bypass or misconfigured role), the CSV often contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full database columns including sensitive ones&lt;/li&gt;
&lt;li&gt;Password reset hashes&lt;/li&gt;
&lt;li&gt;2FA secrets (mangled or plain)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  9. PATCH / PUT Responses
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;PATCH /api/users/me&lt;/code&gt; (with empty body &lt;code&gt;{}&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this works:&lt;/strong&gt; When you send an update with no changes, some APIs still return the full updated object - which might contain fields you never had permission to read.&lt;/p&gt;




&lt;h2&gt;
  
  
  My 4-Step Testing Methodology
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Intercept Everything
&lt;/h3&gt;

&lt;p&gt;Stop trusting what you see in the browser/mobile app. Forward every request through Burp Suite, Caido, or ZAP.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The raw response always tells the truth.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Build Your Keyword Radar
&lt;/h3&gt;

&lt;p&gt;I search responses for these strings (I keep this as a grep pattern):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;email|e-?mail|phone|mobile|telephone|address|location|
ssn|tax|tin|passport|license|driver|
birthday|dob|age|
password|pass|pwd|secret|token|jwt|api[_-]?key|apikey|
hash|salt|reset[_-]?token|verify[_-]?token|
credit[_-]?card|cc|cvv|expiry|stripe|paypal|
ip[_-]?address|user[_-]?agent|device[_-]?id|
internal[_-]?note|admin[_-]?note|flag|reason[_-]?code|
otp|mfa|two[_-]?fa|backup[_-]?code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Compare Responses Across IDs
&lt;/h3&gt;

&lt;p&gt;If you can change &lt;code&gt;?user_id=1&lt;/code&gt; to &lt;code&gt;?user_id=2&lt;/code&gt;, do it. But even without IDOR, compare:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Authenticated vs unauthenticated&lt;/li&gt;
&lt;li&gt;Your low-privilege account vs a different low-privilege account&lt;/li&gt;
&lt;li&gt;Verbose param (&lt;code&gt;?verbose=true&lt;/code&gt;) vs normal&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Tool tip:&lt;/strong&gt; Use Burp's &lt;strong&gt;Comparer&lt;/strong&gt; or the &lt;strong&gt;Diffy&lt;/strong&gt; extension to spot extra JSON keys.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Trigger Verbose Modes
&lt;/h3&gt;

&lt;p&gt;Add these parameters to every request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;?verbose&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;
?debug&lt;span class="o"&gt;=&lt;/span&gt;1
?include_fields&lt;span class="o"&gt;=&lt;/span&gt;all
?format&lt;span class="o"&gt;=&lt;/span&gt;full
?fields&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;
?pretty&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;
?show_internal&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>excessivedataexposure</category>
      <category>apipentesting</category>
      <category>apisecurity</category>
      <category>apidataexposure</category>
    </item>
    <item>
      <title>Broken User Authentication in APIs</title>
      <dc:creator>Abhinav Singwal</dc:creator>
      <pubDate>Sat, 06 Jun 2026 06:58:36 +0000</pubDate>
      <link>https://dev.to/abhinavsingwal/broken-user-authentication-in-apis-m1p</link>
      <guid>https://dev.to/abhinavsingwal/broken-user-authentication-in-apis-m1p</guid>
      <description>&lt;p&gt;Broken User Authentication ranks as the second most critical vulnerability in the OWASP API Security Top 10 for 2023. In bug bounty programs, authentication flaws often lead to account takeover, data breaches, and high-severity payouts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fxy91245c927zdyog89c1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fxy91245c927zdyog89c1.png" alt="Broken User Authentication in APIs" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unlike traditional web applications, APIs use stateless tokens, OAuth flows, and machine-to-machine communication patterns. This creates unique attack surfaces that many testers overlook. This guide covers the ten most critical API authentication vulnerabilities with practical testing techniques.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes API Authentication Different
&lt;/h2&gt;

&lt;p&gt;Standard web apps rely on session cookies and server-side state. APIs use tokens that carry all authentication information within the request itself. Every request must prove its identity independently.&lt;/p&gt;

&lt;p&gt;This stateless design introduces specific vulnerabilities. JWT tokens can be manipulated. Refresh tokens can be replayed. OAuth flows have multiple redirects where things go wrong. Understanding these differences is the first step to finding bugs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Ten Critical Vulnerabilities
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. JWT Algorithm Confusion
&lt;/h3&gt;

&lt;p&gt;JSON Web Tokens include an &lt;code&gt;alg&lt;/code&gt; header that tells the server which signing algorithm was used. When servers trust this header without strict validation, attackers can bypass signature verification.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;none&lt;/code&gt; algorithm attack works because some libraries accept unsigned tokens. Setting &lt;code&gt;alg: "none"&lt;/code&gt; removes the signature requirement entirely. The server processes the token as valid.&lt;/p&gt;

&lt;p&gt;The RS256 to HS256 confusion attack is more subtle. RS256 uses RSA private keys for signing and public keys for verification. HS256 uses a shared secret. If a server expects RS256 but receives HS256, it may verify the signature using the public key as an HMAC secret. Attackers who know the public key can forge valid tokens.&lt;/p&gt;

&lt;p&gt;Testing requires intercepting a valid JWT, modifying the &lt;code&gt;alg&lt;/code&gt; header, and sending the modified token to protected endpoints.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. JWT Key ID Injection
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;kid&lt;/code&gt; header specifies which key should verify the token. Servers often fetch this key from files, databases, or external URLs. When &lt;code&gt;kid&lt;/code&gt; is not sanitized, injection attacks become possible.&lt;/p&gt;

&lt;p&gt;Path traversal via &lt;code&gt;kid: "../../../dev/null"&lt;/code&gt; can read local files. If the server uses file contents as verification keys, attackers control the key.&lt;/p&gt;

&lt;p&gt;SQL injection in &lt;code&gt;kid&lt;/code&gt; works when servers query a database for the key. A payload like &lt;code&gt;' UNION SELECT 'public_key&lt;/code&gt; can return attacker-controlled values.&lt;/p&gt;

&lt;p&gt;SSRF attacks use &lt;code&gt;kid: "http://internal-service/secret"&lt;/code&gt; to force the server into fetching from attacker-specified locations.&lt;/p&gt;

&lt;p&gt;Testing requires modifying the &lt;code&gt;kid&lt;/code&gt; value to various injection payloads and observing server behavior.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Weak JWT Secrets
&lt;/h3&gt;

&lt;p&gt;Many developers generate JWT secrets manually. Common choices include "secret", "changeme", "password", or simple strings. These are vulnerable to brute-force attacks.&lt;/p&gt;

&lt;p&gt;Hashcat with mode 16500 cracks JWT secrets. RockYou wordlist contains thousands of common secrets. Tools like jwt_tool and crackjwt automate this process.&lt;/p&gt;

&lt;p&gt;A secret with low entropy can be cracked in minutes on modern hardware. Even longer secrets that follow dictionary patterns are vulnerable.&lt;/p&gt;

&lt;p&gt;Testing involves capturing a valid JWT and attempting to crack its secret offline. No rate limits apply because the attack happens on your own machine.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Missing Token Expiration
&lt;/h3&gt;

&lt;p&gt;JWTs can include an &lt;code&gt;exp&lt;/code&gt; claim that defines expiration time. Without this claim, tokens remain valid forever. Some implementations set expiration to years in the future or never check it at all.&lt;/p&gt;

&lt;p&gt;An attacker who captures a token once can reuse it indefinitely. This is especially dangerous for tokens leaked in logs, browser history, or network traffic.&lt;/p&gt;

&lt;p&gt;Testing requires capturing a token, waiting for its supposed expiration, and attempting to reuse it. Also check if the &lt;code&gt;exp&lt;/code&gt; claim exists and whether the server rejects expired tokens.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Refresh Token Reuse Without Rotation
&lt;/h3&gt;

&lt;p&gt;Refresh tokens allow clients to obtain new access tokens without re-authenticating. The secure pattern is one-time use with rotation. Each refresh request returns a new refresh token and invalidates the old one.&lt;/p&gt;

&lt;p&gt;Without rotation, stolen refresh tokens remain valid forever. An attacker can generate unlimited access tokens from a single stolen refresh token.&lt;/p&gt;

&lt;p&gt;Testing involves using a refresh token to obtain new tokens, then using the same refresh token again. If the second request succeeds, rotation is missing.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Predictable Password Reset Tokens
&lt;/h3&gt;

&lt;p&gt;Password reset flows generate tokens sent via email or SMS. When these tokens follow predictable patterns, attackers can brute-force them.&lt;/p&gt;

&lt;p&gt;Common flaws include 4-digit or 6-digit numeric codes with no rate limiting. An attacker can try all 10,000 combinations in minutes.&lt;/p&gt;

&lt;p&gt;Time-based tokens using milliseconds or seconds since epoch are also predictable. If an attacker can guess the approximate reset request time, they can narrow the search space.&lt;/p&gt;

&lt;p&gt;Tokens returned in API responses during the reset request represent the most critical flaw. The attacker can simply read the token from the response body.&lt;/p&gt;

&lt;p&gt;Testing requires requesting multiple resets and analyzing token patterns. Check for sequential increases, timestamp encoding, or short numeric values.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. No Rate Limiting on Authentication Endpoints
&lt;/h3&gt;

&lt;p&gt;Login, OTP verification, password reset, and token issuance endpoints require rate limiting. Without it, brute-force attacks become feasible.&lt;/p&gt;

&lt;p&gt;Four-digit OTP codes need only 10,000 attempts. With no rate limits, this takes minutes. Credential stuffing using breached password lists becomes trivial.&lt;/p&gt;

&lt;p&gt;Rate limiting should apply per user, per IP address, and globally. It should also increase delays after repeated failures.&lt;/p&gt;

&lt;p&gt;Testing involves sending 100 or more rapid requests to authentication endpoints. Use Burp Intruder or a simple Python script. If all requests succeed, rate limiting is missing.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Verbose Error Messages Enabling Account Enumeration
&lt;/h3&gt;

&lt;p&gt;Authentication endpoints should return identical responses for all failure cases. When they differentiate, attackers can enumerate valid users.&lt;/p&gt;

&lt;p&gt;Different messages like "Password incorrect" versus "User not found" reveal whether an account exists. Registration endpoints that say "Email already registered" provide the same information.&lt;/p&gt;

&lt;p&gt;Response timing differences can also leak information. Checking an existing user might take longer because the server fetches the user record first.&lt;/p&gt;

&lt;p&gt;Testing requires comparing responses for known valid and known invalid inputs. Look for differences in status codes, response bodies, or response times.&lt;/p&gt;

&lt;h3&gt;
  
  
  9. OAuth 2.0 Misconfiguration
&lt;/h3&gt;

&lt;p&gt;OAuth flows involve multiple redirects where tokens pass through the browser. Each redirect is an attack opportunity.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;redirect_uri&lt;/code&gt; parameter tells the OAuth provider where to send the authorization code. When validation is missing, attackers can set their own domain and steal codes.&lt;/p&gt;

&lt;p&gt;Open redirects in &lt;code&gt;redirect_uri&lt;/code&gt; allow attackers to leak codes via the Referer header. The code travels from the legitimate site to the attacker's site automatically.&lt;/p&gt;

&lt;p&gt;Missing CSRF protection on the &lt;code&gt;state&lt;/code&gt; parameter enables attackers to initiate flows and intercept responses. The &lt;code&gt;state&lt;/code&gt; parameter should be unpredictable and tied to the user session.&lt;/p&gt;

&lt;p&gt;Testing requires attempting to change &lt;code&gt;redirect_uri&lt;/code&gt; to external domains, open redirect endpoints, or localhost addresses.&lt;/p&gt;

&lt;h3&gt;
  
  
  10. Exposed API Keys in URLs and Client Code
&lt;/h3&gt;

&lt;p&gt;API keys in URLs appear in browser history, server logs, and Referer headers. Anyone with access to these logs can steal the key.&lt;/p&gt;

&lt;p&gt;Mobile applications and single-page apps often hardcode API keys in JavaScript or configuration files. These are trivially extractable.&lt;/p&gt;

&lt;p&gt;Debug endpoints, source maps, and public repositories are common leakage sources. Developers sometimes commit keys to GitHub despite best efforts.&lt;/p&gt;

&lt;p&gt;Testing involves checking network traffic, browser developer tools, JavaScript files, and public code repositories for exposed keys.&lt;/p&gt;

</description>
      <category>api</category>
      <category>apipentesting</category>
      <category>brokenuserauthentication</category>
      <category>apisecurity</category>
    </item>
    <item>
      <title>#XSS #CrossSiteScripting #XSSLABS #PortSwiggerLabsXSS</title>
      <dc:creator>Abhinav Singwal</dc:creator>
      <pubDate>Sat, 06 Jun 2026 05:35:41 +0000</pubDate>
      <link>https://dev.to/abhinavsingwal/xss-crosssitescripting-xsslabs-portswiggerlabsxss-2ioh</link>
      <guid>https://dev.to/abhinavsingwal/xss-crosssitescripting-xsslabs-portswiggerlabsxss-2ioh</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/abhinavsingwal/master-xss-the-practical-way-introducing-xss-labs-2p07" class="crayons-story__hidden-navigation-link"&gt;Master XSS the Practical Way: Introducing xss-labs&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/abhinavsingwal" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2914312%2F452f11ca-f061-4f95-a0f2-c76390b4e5c9.jpg" alt="abhinavsingwal profile" class="crayons-avatar__image" width="800" height="822"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/abhinavsingwal" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Abhinav Singwal
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Abhinav Singwal
                
              
              &lt;div id="story-author-preview-content-3754341" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/abhinavsingwal" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2914312%2F452f11ca-f061-4f95-a0f2-c76390b4e5c9.jpg" class="crayons-avatar__image" alt="" width="800" height="822"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Abhinav Singwal&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/abhinavsingwal/master-xss-the-practical-way-introducing-xss-labs-2p07" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 26&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/abhinavsingwal/master-xss-the-practical-way-introducing-xss-labs-2p07" id="article-link-3754341"&gt;
          Master XSS the Practical Way: Introducing xss-labs
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/tryhackme"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;tryhackme&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/xss"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;xss&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/xssrat"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;xssrat&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/hackthebox"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;hackthebox&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/abhinavsingwal/master-xss-the-practical-way-introducing-xss-labs-2p07#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>API Hacking: What is BOLA/IDOR?</title>
      <dc:creator>Abhinav Singwal</dc:creator>
      <pubDate>Sat, 06 Jun 2026 05:34:25 +0000</pubDate>
      <link>https://dev.to/abhinavsingwal/api-hacking-what-is-bolaidor-25f</link>
      <guid>https://dev.to/abhinavsingwal/api-hacking-what-is-bolaidor-25f</guid>
      <description>&lt;p&gt;Today I want to talk about one of the most common API vulnerabilities.&lt;/p&gt;

&lt;p&gt;It's called BOLA (Broken Object Level Authorization).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fh0ioisjw2pkubv8fzgcx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fh0ioisjw2pkubv8fzgcx.jpg" alt="Broken Object Level Authorization - API BOLA"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You might also know it as IDOR (Insecure Direct Object Reference).&lt;/p&gt;

&lt;p&gt;Don't let the fancy names scare you. It's actually very simple.&lt;/p&gt;

&lt;p&gt;Let me explain.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Imagine you live in an apartment building.&lt;/p&gt;

&lt;p&gt;Each apartment has a number: 101, 102, 103...&lt;/p&gt;

&lt;p&gt;Now imagine the building has no locks. Anyone can walk into any apartment.&lt;/p&gt;

&lt;p&gt;That's BOLA.&lt;/p&gt;

&lt;p&gt;The API says "here is apartment number 103" but never checks if you live there.&lt;/p&gt;




&lt;h2&gt;
  
  
  A Real API Example
&lt;/h2&gt;

&lt;p&gt;Let's say you log into a shopping website.&lt;/p&gt;

&lt;p&gt;You want to see your order number 1001.&lt;/p&gt;

&lt;p&gt;The app sends this request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET /api/orders/1001
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And you see your order. Great.&lt;/p&gt;

&lt;p&gt;Now what happens if you change the number?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET /api/orders/1002
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you see someone else's order, that is BOLA.&lt;/p&gt;

&lt;p&gt;The API trusted you just because you asked. It never checked if the order belongs to you.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Does This Happen?
&lt;/h2&gt;

&lt;p&gt;Developers forget to add a simple check.&lt;/p&gt;

&lt;p&gt;They should ask: "Does user 123 own order 1002?"&lt;/p&gt;

&lt;p&gt;But sometimes they only ask: "Is user 123 logged in?"&lt;/p&gt;

&lt;p&gt;Being logged in is not enough. You also need permission to see that specific thing.&lt;/p&gt;




&lt;h2&gt;
  
  
  How Hackers Find BOLA
&lt;/h2&gt;

&lt;p&gt;It is very simple. You just change numbers or IDs in the request.&lt;/p&gt;

&lt;p&gt;Look for these places:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;GET /api/user/123&lt;/code&gt; -&amp;gt; try 124, 125, 126&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;POST /api/invoice&lt;/code&gt; with &lt;code&gt;{"invoice_id": 456}&lt;/code&gt; in body -&amp;gt; try 457&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;DELETE /api/post/789&lt;/code&gt; -&amp;gt; try 788, 787&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/api/download?file=report_1.pdf&lt;/code&gt; -&amp;gt; try report_2.pdf&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also try UUIDs like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/api/user/550e8400-e29b-41d4-a716-446655440000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Change one letter or number. Sometimes it still works.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick Test Method (2 Accounts)
&lt;/h2&gt;

&lt;p&gt;This is how I test for BOLA:&lt;/p&gt;

&lt;p&gt;Step 1: Create two accounts (Account A and Account B)&lt;br&gt;
Step 2: Login as Account A, find an order ID or user ID&lt;br&gt;
Step 3: Copy the request&lt;br&gt;
Step 4: Login as Account B&lt;br&gt;
Step 5: Paste the request and change the ID to Account A's ID&lt;/p&gt;

&lt;p&gt;If you see Account A's data while logged in as Account B, you found BOLA.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Protect Your API (For Developers)
&lt;/h2&gt;

&lt;p&gt;If you build APIs, remember this rule:&lt;/p&gt;

&lt;p&gt;Never trust the user. Always check permission.&lt;/p&gt;

&lt;p&gt;Every time someone asks for an object, ask two questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Is the user logged in?&lt;/li&gt;
&lt;li&gt;Does this user own the object?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For extra safety, don't use simple numbers like 123. Use random UUIDs. But even then, still check permissions.&lt;/p&gt;

&lt;p&gt;Found this helpful? Leave a like and follow for more API hacking posts.&lt;/p&gt;

&lt;p&gt;Questions? Drop a comment below.&lt;/p&gt;

</description>
      <category>api</category>
      <category>cybersecurity</category>
      <category>bola</category>
      <category>apipentesting</category>
    </item>
  </channel>
</rss>
