UNPKG

@aikidosec/firewall

Version:

Zen by Aikido is an embedded Web Application Firewall that autonomously protects Node.js apps against common and critical attacks

34 lines (33 loc) 1.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkContextForSqlInjection = checkContextForSqlInjection; const Source_1 = require("../../agent/Source"); const attackPath_1 = require("../../helpers/attackPath"); const extractStringsFromUserInputCached_1 = require("../../helpers/extractStringsFromUserInputCached"); const detectSQLInjection_1 = require("./detectSQLInjection"); /** * This function goes over all the different input types in the context and checks * if it's a possible SQL Injection, if so the function returns an InterceptorResult */ function checkContextForSqlInjection({ sql, operation, context, dialect, }) { for (const source of Source_1.SOURCES) { const userInput = (0, extractStringsFromUserInputCached_1.extractStringsFromUserInputCached)(context, source); if (!userInput) { continue; } for (const str of userInput) { if ((0, detectSQLInjection_1.detectSQLInjection)(sql, str, dialect)) { return { operation: operation, kind: "sql_injection", source: source, pathsToPayload: (0, attackPath_1.getPathsToPayload)(str, context[source]), metadata: { sql: sql, }, payload: str, }; } } } }