Ensure your database user account only has the permissions it absolutely needs. For example, a "read-only" web user shouldn't be allowed to access INFORMATION_SCHEMA .
This is the gold standard. Instead of building a query string with user input, you use placeholders ( ? ). The database treats the input strictly as data, never as executable code. Ensure your database user account only has the
Only allow the types of characters you expect. If a user is searching for a "Keyword," they probably don't need to use parentheses or semicolons. Instead of building a query string with user
If a website's search bar or URL parameter isn't properly "sanitized," an attacker can use this method to: (e.g., MySQL, PostgreSQL). Extract table names and column structures. Only allow the types of characters you expect
The attacker isn't trying to delete data yet; they are trying to "fingerprint" the database.
It looks like your query contains some SQL injection syntax ( SELECT COUNT , CONCAT , INFORMATION_SCHEMA ). If you're looking for an on how these types of database queries work—specifically regarding web security and SQL injection (SQLi) —I can certainly help with that. What is this code?
If you are a developer, you can stop these attacks using three main methods: