Explicar el ejemplo de las mejores prácticas de validación de datos de OWASP

2

Estoy viendo la página Validación de datos de OWASP tratando de averiguar qué significan con "Mejor Método "para" validación de reglas de negocio ". Los cito aquí:

  

Ejemplo: Escenario

     
  • Debe rellenar una lista con las cuentas proporcionadas por el sistema back-end
  •   
  • El usuario elegirá una cuenta, elegirá un facturador y presionará a continuación
  •   

...

     

Mejor método

     

El código original emitió índices en lugar de   nombres de cuenta.

     

int payeeLstId = session.getParameter('payeelstid');

     

accountFrom = account.getAcctNumberByIndex(payeeLstId);

     

Esto no solo es más fácil de representar en HTML, sino que también hace la validación y   La validación de las reglas de negocios es trivial. El campo no puede ser manipulado.

Los otros ejemplos (malos / aceptables) enumerados se descartan, ya que es fácil para el usuario manipular los parámetros.

¿Por qué un usuario no podría manipular el payeeLstId en el "Mejor método" y, por lo tanto, cambiar el accountFrom para cambiar? ¿Ya no están utilizando un formulario? ¿Cómo termina la selección del usuario en la sesión? Encuentro el ejemplo poco claro.

    
pregunta span 19.08.2015 - 22:29
fuente

1 respuesta

1

Este ejemplo no evita que se cambie el valor intencionalmente porque la funcionalidad explicada dice que el usuario tiene permiso para establecer el parámetro payeeLstId . Sin embargo, el ejemplo provisto previene contra ataques múltiples porque el parámetro se convierte primero a un int antes de ser usado para consultar la cuenta. Al manipular, asumo que OWASP significa que el valor no se puede utilizar para explotar las vulnerabilidades enumeradas (desbordamientos de búfer, inyección de XML, etc.) en la sección Por qué esto es incorrecto que no establece el valor como referencia Otra cuenta.

    
respondido por el Justin Moore 19.08.2015 - 22:45
fuente

Lea otras preguntas en las etiquetas