Sus ejemplos no ilustran el problema (y tampoco siguen ningún estilo PHP estándar que yo sepa). Es poco probable que vea el problema hasta que llegue a más de 100 líneas de código.
(No obtengo tu referencia a Scrypt).
Hay 2 problemas que aborda esta pregunta: el del alcance y el de la modificación de datos. $ _POST es un superglobal por lo que los datos están siempre en el alcance sin ser declarados explícitamente en un bloque. Esto tiene ciertas ventajas, por ej. Siempre sabes dónde encontrarlo. Pero confiar en los datos que desea procesar y estar presente en $ _POST al escribir un método o función significa que no puede reutilizar ese método para otros datos.
Siempre que se asegure de no cambiar el valor original, siempre puede consultar la versión canónica. p.ej. si se produce un error en el procesamiento y desea registrar las entradas y, por ejemplo, un seguimiento de pila.
El siguiente código sería muy mal programado:
foreach ($_POST as $name=>$value) {
$_POST['name']=mysqli_real_escape_string($connection, $value);
}
En caso de duda, la regla de oro es
- validar entrada
- transformar salida
$ _POST, de hecho, todos los superglobales excepto $ _SESSION, son entradas.
Seguir las convenciones y aplicar buenas prácticas de programación hace que el código sea más manejable, más fácil de revisar y resistente a los errores, por lo que es menos probable que tenga efectos secundarios inesperados (es decir, vulnerabilidades).
Si hubieras preguntado esto, por ejemplo, Stackoverflow, entonces supongo que algún error habría señalado que la desreferenciación de un superglobal es más lenta que una variable local. De la misma manera que escupir en el océano eleva el nivel del agua. Sin embargo, aunque creo que esta es una pregunta sobre seguridad, sospecho que podría obtener mejores comentarios en un foro diferente.