Skip to content

Bits of .NET

Daily micro-tips for C#, SQL, performance, and scalable backend engineering.

  • Asp.Net Core
  • C#
  • SQL
  • JavaScript
  • CSS
  • About
  • ErcanOPAK.com
  • No Access
  • Privacy Policy
AI

The AI Prompt That Finds Every API Endpoint Missing Input Validation

- 03.10.26 - ErcanOPAK

🤖 The AI Prompt That Checks Whether Every Endpoint Actually Validates What It Receives

Input validation is the kind of thing every developer agrees is important and almost nobody consistently audits across an entire API surface after the fact – new endpoints get added over months or years, some by people who always remembered to validate, some by people in a hurry, and the result is an API where validation coverage is inconsistent in a way that’s hard to see without reading every single endpoint one at a time. This prompt asks an AI assistant to do exactly that pass, systematically.

📋 The Prompt

Here are the endpoint handlers from our API (route, method, and the
full handler code for each). For each endpoint, tell me:

1. Which parameters (route params, query string, request body fields)
   are used directly without any visible validation - no null/empty
   check, no type or range check, no length limit - before being
   used in a database query, a file path, or returned in a response
2. Whether missing validation on a given parameter looks low-risk
   (it's only ever used for something cosmetic) or high-risk (it
   flows into a query, a file operation, or a decision that affects
   another user's data)
3. For the high-risk cases, the single most likely failure mode if
   that parameter arrived malformed, empty, or unexpectedly large

Group the findings by risk level, highest first.

Endpoint handlers:
[PASTE THE ENDPOINT HANDLER CODE HERE]

✅ Why This Prompt Works

  • Asking specifically which parameters flow into a database query, a file path, or a cross-user decision focuses the review on validation gaps that actually matter, rather than producing a long undifferentiated list where a missing check on a cosmetic display field gets equal billing with one that could expose another user’s data.
  • Requesting the most likely failure mode for each high-risk gap turns an abstract ‘this isn’t validated’ observation into something concrete enough to prioritize and assign – a vague warning is easy to defer, a specific plausible failure is much harder to ignore.
  • Reviewing handlers in bulk, across the whole API surface at once, surfaces the handlers written in a hurry or by someone newer to the codebase, which tend to cluster in specific areas rather than being evenly spread – useful context for where future review attention should actually go.

⚠️ Where to Draw the Line

  • This finds the absence of validation code, not whether validation happening somewhere else (a shared middleware, a framework-level model validation attribute) already covers the same parameter – a finding here is worth confirming against the rest of the request pipeline before assuming a gap is real.
  • A parameter that looks unvalidated in the handler code shown might still be effectively constrained by the database schema, a type system, or a framework’s model binding – this prompt is a starting point for a targeted review, not a definitive security audit on its own.

An API endpoint that trusts its input isn’t one bug waiting to happen – it’s one bug per caller who eventually sends something nobody tested.

— AI Power User

Related posts:

AI Prompt: Generate Cold Emails for B2B SaaS Companies

AI Prompt: Generate JSON Schema from Sample Data

The AI Prompt That Reviews a Database Migration Script for Risky, Irreversible Changes

Post Views: 2

Post navigation

WordPress: Fix Author Bylines That Show the Wrong Name After Migrating Users to a New Database
Windows 11: Fix a Printer That Prints Blank Pages After a Driver Update

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

October 2026
M T W T F S S
 1234
567891011
12131415161718
19202122232425
262728293031  
« Sep    

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (973)
  • How to make theater mode the default for Youtube (950)
  • How to add default value for Entity Framework migrations for DateTime and Bool (939)
  • Get the First and Last Word from a String or Sentence in SQL (847)
  • How to select distinct rows in a datatable in C# (836)
  • How to enable, disable and check if Service Broker is enabled on a database in SQL Server (624)
  • Add Constraint to SQL Table to ensure email contains @ (590)
  • Average of all values in a column that are not zero in SQL (553)
  • How to use Map Mode for Vertical Scroll Mode in Visual Studio (526)
  • Find numbers with more than two decimal places in SQL (468)

Recent Posts

  • CSS: Fix a prefers-color-scheme Media Query That Gets Silently Overridden by a Browser Extension’s Forced Dark Mode
  • Git: Fix a Merge Commit That Silently Drops a File Because Both Branches Deleted It Differently
  • HTML5: Fix a Native Lazy-Loading Image That Never Loads Because It Sits Inside a Hidden Tab Until the User Clicks It
  • The AI Prompt That Traces a Null Reference Exception Back to the Exact Line That First Produced the Null
  • The AI Prompt That Turns a Gym Membership Contract’s Fine Print Into a Plain-English List of Cancellation Steps
  • Photoshop: Fix a Color Profile Mismatch That Makes Printed Output Look Nothing Like What You Saw On Screen
  • WordPress: Fix Search Results That Return Pages From a Theme You Deactivated Months Ago
  • Visual Studio: Fix a Test Project That Builds Fine Alone but Fails to Discover Any Tests After a NuGet Restore
  • ASP.NET Core: Fix a File Upload That Times Out on Slow Connections Only Because Kestrel’s Minimum Data Rate Feature Kicked In
  • JavaScript: Fix an Array Destructuring Default Value That Silently Never Applies Because null Was Passed Instead of Undefined

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (973)
  • How to make theater mode the default for Youtube (950)
  • How to add default value for Entity Framework migrations for DateTime and Bool (939)
  • Get the First and Last Word from a String or Sentence in SQL (847)
  • How to select distinct rows in a datatable in C# (836)

Recent Posts

  • CSS: Fix a prefers-color-scheme Media Query That Gets Silently Overridden by a Browser Extension’s Forced Dark Mode
  • Git: Fix a Merge Commit That Silently Drops a File Because Both Branches Deleted It Differently
  • HTML5: Fix a Native Lazy-Loading Image That Never Loads Because It Sits Inside a Hidden Tab Until the User Clicks It
  • The AI Prompt That Traces a Null Reference Exception Back to the Exact Line That First Produced the Null
  • The AI Prompt That Turns a Gym Membership Contract’s Fine Print Into a Plain-English List of Cancellation Steps

Social

  • ErcanOPAK.com
  • GoodReads
  • LetterBoxD
  • Linkedin
  • The Blog
  • Twitter
© 2026 Bits of .NET | Built with Xblog Plus free WordPress theme by wpthemespace.com