Protección de pagoDetalles
- Los cambios dentro del paquete son gratuitos.
- Si no responde en los 3 días siguientes a la entrega, el trabajo se acepta automáticamente.
El dinero queda reservado al pagar y solo se libera cuando usted acepta el trabajo.

Ejemplo de resultado
Revisión de código: script en Python para importar pedidos de una tienda online
Qué hace el código
- Lee
orders.csvexportado de la tienda. - Para cada línea de pedido, busca el producto por SKU en
stock.xlsxy resta la cantidad. - Guarda el stock actualizado y registra los totales en
import_log.txt.
La estructura es clara y las funciones tienen buenos nombres. Casi todos los problemas vienen de datos de entrada que no tienen la forma que el script espera.
Errores y puntos débiles
| # | Línea | Gravedad | Problema |
|---|---|---|---|
| 1 | 48 | Alta | El mismo CSV se puede importar dos veces; no se comprueban los ID de pedido ya procesados. Es la causa más probable del stock negativo. |
| 2 | 72 | Alta | int(row["qty"]) falla con valores vacíos o «2.0» de pedidos reembolsados. |
| 3 | 95 | Media | La búsqueda por SKU distingue mayúsculas: «gt-101» y «GT-101» se tratan como productos distintos. |
| 4 | 130 | Media | El archivo se abre sin encoding="utf-8", así que los nombres con tildes se rompen en Windows. |
| 5 | 201 | Baja | Un except: genérico oculta los errores reales y vuelve inútil el log. |
Fragmentos corregidos
Problema 1: omitir pedidos ya importados
processed = load_processed_ids("processed_orders.txt")
for row in reader:
if row["order_id"] in processed:
continue
# ... lógica existente ...
processed.add(row["order_id"])
save_processed_ids("processed_orders.txt", processed)
Por qué: cada pedido se aplica una sola vez, aunque vuelva a ejecutar el script con el mismo archivo.
Problema 2: leer la cantidad de forma segura
raw = (row.get("qty") or "").strip()
try:
qty = int(float(raw))
except ValueError:
log.warning("Pedido %s: cantidad no válida %r, omitido", row["order_id"], raw)
continue
Por qué: las líneas reembolsadas o parciales se omiten con una nota clara en lugar de detener toda la importación.
Problema 3: normalizar los SKU
sku = row["sku"].strip().upper()
Aplique el mismo .strip().upper() al construir el diccionario de stock.
Estilo y legibilidad
process()tiene 90 líneas; divídala enread_orders,apply_to_stockywrite_report.- Reemplace los números de columna «mágicos» (
row[7]) por los nombres de las cabeceras.
Pruebe cada corrección con una copia de sus archivos: leímos el código, pero no lo ejecutamos.
Cliente: dueña de una tienda de tés que escribió un script en Python de 310 líneas para importar los pedidos desde un CSV exportado a la planilla de stock Problema reportado: «A veces el stock queda en negativo y el script se cae con algunos archivos».
El cliente y todos los datos son ficticios.
Acerca de este servicio
Muchos agujeros de seguridad se ven directamente en el código: comandos SQL o de shell construidos con la entrada del usuario, salida impresa sin escapar, contraseñas guardadas con un hash rápido, comprobaciones que confirman quién es el usuario pero no a qué puede acceder y claves escritas en el código fuente. Leemos su código con el OWASP Top 10 como lista de control, le explicamos cada punto débil y cómo podría explotarse, y los ordenamos por riesgo. Cada hallazgo incluye un fragmento corregido con el patrón seguro para su lenguaje.
Qué incluye
- Qué recibeUna revisión escrita en la página del pedido: puntos débiles ordenados por riesgo con una explicación de cada uno y fragmentos corregidos con patrones seguros. Premium añade una lista breve de refuerzo para el resto del proyecto.
- InyecciónInyección de SQL, de shell y de plantillas
- Escapado de la salidaRiesgos de cross-site scripting
- Controles de accesoQuién puede ver y cambiar qué
- Contraseñas y secretosHashing y claves fuera del código
- Hallazgos ordenadosCorrija primero lo más grave
Cómo funciona
- 1BriefUsted pega las partes sensibles del código
- 2LecturaLo contrastamos con el OWASP Top 10
- 3RevisiónUsted recibe hallazgos ordenados y correcciones
Qué necesitamos de usted
El código que maneja entradas, inicios de sesión, archivos o pagos pegado como texto o en capturas de pantalla con los secretos sustituidos por marcadores, el lenguaje y el framework, y quién usa la aplicación.
Le preguntaremos:
- ¿Qué lenguaje y qué framework?
- ¿Qué partes manejan entradas de usuarios, inicios de sesión o pagos?
- ¿Quién usa la aplicación?
- ¿Algún incidente o aviso concreto motivó esta revisión?
Comparar paquetes
| Paquetes | BásicoCódigo de hasta 100 líneas15 US$ | EstándarCódigo de hasta 400 líneas35 US$ | PremiumHasta 1.000 líneas con lista de refuerzo69 US$ |
|---|---|---|---|
| Plazo | 1 día | 2 días | 3 días |
| Cambios | 1 | 2 | 3 |
| Líneas de código | hasta 100 | hasta 400 | hasta 1.000 |
| Fragmentos corregidos | Sí | Sí | Sí |
| Lista de refuerzo | No | No | Sí |
| Hacer pedido Básico | Hacer pedido Estándar | Hacer pedido Premium |
Protección de pago
Usted paga al hacer el pedido, pero el dinero solo se libera por un trabajo aceptado.
- Precio fijoEl precio del paquete no cambia después del pago.
- El dinero queda reservadoAl pagar, el importe solo queda reservado. Pasa a Dleex cuando usted acepta el trabajo.
- Revisado antes de la entregaCada resultado pasa un control de calidad antes de llegar a usted, y lo ve en la página del pedido antes de aceptarlo.
- Cambios gratuitosSolicite cambios dentro de su brief tantas veces como permita el paquete.
- Aceptación a los 3 díasSi en los 3 días siguientes a la entrega no acepta el trabajo ni solicita cambios, se acepta automáticamente. Si escribe en el chat del pedido después de la entrega, el pedido queda en espera; cuando le respondamos, podremos reiniciar el plazo de 3 días y se lo indicaremos en el chat.
- Rehacer el trabajo o reembolso totalSi el resultado no se ajusta a su brief y los cambios no lo resolvieron, o el trabajo tarda más del doble de su plazo, escriba en el chat del pedido: rehacemos el trabajo o le reembolsamos el pago íntegro.
Preguntas y respuestas
¿Es una prueba de penetración o un certificado de seguridad?
No. Leemos el código que nos envía y no atacamos ni escaneamos su sistema en producción, así que esto no sustituye una auditoría formal cuando se exige una.
¿Debo enviar contraseñas o claves?
Nunca. Sustitúyalas por marcadores; si ya había una clave real en el código, cámbiela por una nueva.
¿Ejecutan mi código?
No. Lo leemos con atención y analizamos cómo se comporta, pero no lo ejecutamos, así que pruebe cada corrección sugerida en su propio proyecto.