@aikidosec/firewall
Version:
Zen by Aikido is an embedded Web Application Firewall that autonomously protects Node.js apps against common and critical attacks
27 lines (26 loc) • 1.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SQLInjectionDetectionResult = void 0;
exports.detectSQLInjection = detectSQLInjection;
const shouldReturnEarly_1 = require("./shouldReturnEarly");
// eslint-disable-next-line camelcase
const zen_internals_1 = require("../../internals/zen_internals");
exports.SQLInjectionDetectionResult = {
SAFE: 0,
INJECTION_DETECTED: 1,
INTERNAL_ERROR: 2,
FAILED_TO_TOKENIZE: 3,
};
function detectSQLInjection(query, userInput, dialect) {
if ((0, shouldReturnEarly_1.shouldReturnEarly)(query, userInput)) {
return exports.SQLInjectionDetectionResult.SAFE;
}
const code = (0, zen_internals_1.wasm_detect_sql_injection)(query.toLowerCase(), userInput.toLowerCase(), dialect.getWASMDialectInt());
if (code === exports.SQLInjectionDetectionResult.SAFE ||
code === exports.SQLInjectionDetectionResult.INJECTION_DETECTED ||
code === exports.SQLInjectionDetectionResult.INTERNAL_ERROR ||
code === exports.SQLInjectionDetectionResult.FAILED_TO_TOKENIZE) {
return code;
}
throw new Error("Unexpected return code from WASM: " + code);
}