Revisión de código centrada en seguridadFormación en programación

Revisión de código centrada en puntos débiles de seguridad

Entrega desde 1 díaCambios incluidosControl de calidad
Paquetes
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.
Hacer pedido · 35 US$

El dinero queda reservado al pagar y solo se libera cuando usted acepta el trabajo.

Revisión de código centrada en puntos débiles de seguridad

Ejemplo de resultado

Ejemplo del paquete Estándar

Revisión de código: script en Python para importar pedidos de una tienda online

Qué hace el código

  1. Lee orders.csv exportado de la tienda.
  2. Para cada línea de pedido, busca el producto por SKU en stock.xlsx y resta la cantidad.
  3. 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íneaGravedadProblema
148AltaEl 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.
272Altaint(row["qty"]) falla con valores vacíos o «2.0» de pedidos reembolsados.
395MediaLa búsqueda por SKU distingue mayúsculas: «gt-101» y «GT-101» se tratan como productos distintos.
4130MediaEl archivo se abre sin encoding="utf-8", así que los nombres con tildes se rompen en Windows.
5201BajaUn 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 en read_orders, apply_to_stock y write_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

  1. 1
    BriefUsted pega las partes sensibles del código
  2. 2
    LecturaLo contrastamos con el OWASP Top 10
  3. 3
    Revisió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

PaquetesBá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$
Plazo1 día2 días3 días
Cambios123
Líneas de códigohasta 100hasta 400hasta 1.000
Fragmentos corregidosSíSíSí
Lista de refuerzoNoNoSí
Hacer pedido BásicoHacer pedido EstándarHacer 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.
Cómo funciona →

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.

Paquetes
Hacer pedido · 35 US$· 2 días