Detectar inyecciones
Una sola comilla sin escapar en un formulario de acceso puede terminar con su tabla de usuarios publicada en un sitio de filtraciones; una sola comilla invertida perdida en un campo de nombre de archivo puede terminar en un comando de shell que nunca escribió. La API para detectar inyecciones examina cualquier cadena de entrada en busca de las huellas sintácticas de inyección SQL, cross-site scripting e inyección de comandos, y devuelve un veredicto antes de que esa cadena toque una consulta, una vista renderizada o una llamada al sistema.
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
El problema, dicho sin rodeos
Los ataques de inyección han encabezado los rankings de vulnerabilidades por más de dos décadas por una razón mundana: cualquier lugar donde su aplicación toma una cadena del exterior y luego trata parte de ella como código, estructura o comando es un lugar donde un atacante puede colar instrucciones disfrazadas de datos. Las consultas parametrizadas y el escape de salida siguen siendo la solución real a nivel de código, pero los sistemas reales son grandes, heredados y están llenos de casos límite donde un formulario antiguo, un plugin de terceros o una funcionalidad hecha con prisa se salta el camino seguro. Este endpoint es una segunda línea de defensa que detecta la cadena misma antes de que cause daño, sin importar qué le pase después.
Qué busca la comprobación en realidad
Llame a POST /verify/injection con la cadena de entrada y la tarea escanea marcadores de inyección SQL como tautologías, secuencias de comentarios y consultas encadenadas, patrones de cross-site scripting que incluyen etiquetas script, atributos de manejo de eventos y variantes de carga codificada, e indicadores de inyección de comandos como metacaracteres de shell y separadores de comandos encadenados. Devuelve qué categoría se activó y por qué, para que su registro y sus alertas puedan distinguir una prueba obvia de aficionado de un intento más deliberado y ofuscado que merece escalarse.
Quién recurre a este endpoint
Encaja de forma natural en equipos que mantienen formularios heredados que no pueden refactorizar antes de una fecha límite, gateways de API que quieren una capa genérica de sanidad de entrada frente a varios servicios internos con manejo de datos distinto, y herramientas cercanas a un WAF que necesitan una señal de puntaje en vez de un bloqueo duro. Es igual de útil como capa de defensa en profundidad incluso sobre código bien escrito, porque una segunda comprobación independiente que atrapa un error antes de producción sale mucho más barata que el incidente que sigue si no lo hace.
Dónde encaja en un flujo de solicitudes
Como la comprobación es asíncrona, la mayoría de las integraciones la llaman en el borde, en un microservicio de validación, o como una compuerta previa a la escritura en lugar de en cada pulsación de tecla; un task_id vuelve de inmediato y el veredicto llega por webhook firmado, o mediante un enlace firmado válido por 24 horas para flujos que prefieren consultar en lugar de recibir callbacks. A $0.002 por solicitud, con comprobaciones fallidas nunca cobradas y tres reintentos automáticos antes de un error claro, el precio está pensado para correr en cada ruta de escritura, no solo en un subconjunto muestreado.
Lo que no reemplaza
Detectar un patrón de inyección en una cadena no es lo mismo que su aplicación sea inmune a la inyección; las consultas parametrizadas, las sentencias preparadas y la codificación de salida adecuada siguen siendo la solución real. Trate este endpoint como una capa de alerta temprana y monitoreo que atrapa intentos obvios y moderadamente ofuscados de forma rápida y económica, no como un reemplazo de las prácticas de código seguro en el código que finalmente ejecuta la consulta.
Qué puede hacer con ella
Blindaje de formularios heredados
Envuelva un formulario antiguo orientado al cliente que no puede reescribir este trimestre con una comprobación de inyección al enviarse, ganando tiempo sin una refactorización completa.
Comprobaciones previas en el gateway de API
Filtre las cargas entrantes en el gateway antes de que lleguen a varios servicios internos, estandarizando la detección en vez de duplicarla en cada servicio.
Monitoreo y alertas de seguridad
Registre cada intento de inyección marcado junto con su categoría para alimentar un panel que muestre patrones de ataque contra endpoints específicos a lo largo del tiempo.
Aislamiento de plugins de terceros
Enrute las entradas de un plugin de un marketplace que no controla a través de la comprobación antes de que lleguen a su capa central de base de datos.
Preguntas frecuentes
¿La API de detectar inyección SQL también cubre XSS?
Sí, una sola llamada revisa patrones de inyección SQL, cross-site scripting e inyección de comandos, y devuelve qué categoría, si alguna, se detectó.
¿Hay un plan gratuito?
La herramienta de arriba es gratis en su navegador. La API es de pago: cada llamada se descuenta de su saldo prepago de ForHosting KIT — se recarga desde $10.00 (no caduca), se paga el precio publicado de cada solicitud, y una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens, y una tarea fallida no se cobra.
¿Cuánto cuesta una comprobación?
$0.002 por solicitud, cobrado solo cuando la tarea se completa con éxito; las comprobaciones fallidas nunca se cobran y se reintentan automáticamente hasta tres veces.
¿Esto puede sustituir las consultas parametrizadas?
No. Es una capa de detección y monitoreo, no un sustituto de las consultas parametrizadas, las sentencias preparadas y el escape de salida en su propio código.
¿Cómo recibo el resultado?
Por webhook firmado, recomendado para flujos automatizados, o mediante un enlace firmado válido por 24 horas si prefiere consultar el resultado manualmente.
¿Va a marcar texto legítimo que casualmente contiene palabras similares a SQL?
La comprobación busca patrones estructurales y sintácticos, no solo palabras clave, para reducir los falsos positivos en texto legítimo que simplemente menciona términos como SELECT o DROP.
¿Puedo comprobar muchas entradas en lote?
Sí, llame al endpoint una vez por cada cadena; cada llamada es una tarea asíncrona independiente con su propio task_id, lo cual funciona bien para flujos de validación de alto volumen.
¿Se conservan los datos de entrada enviados?
No, todos los datos enviados se eliminan al vencer el periodo de retención y nunca se usan para entrenar modelos.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/verify/injection \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":["valor-1","valor-2"]}'const res = await fetch("https://api.kit.forhosting.com/verify/injection", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
"valor-1",
"valor-2"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/verify/injection",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
"valor-1",
"valor-2"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/verify/injection", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":["valor-1","valor-2"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":["valor-1","valor-2"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/verify/injection", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"items": [
"valor-1",
"valor-2"
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "verify.injection",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |