el formulario mediante required que los campos no estén vacíos
Los campos no se deben validar nunca con HTML o javascript, porque es inseguro y se puede saltar fácilmente. Es la parte del cliente y puede modificarlo.
Simplemente coge la misma página, la guarda, quita el "required" y envía el formulario o mucho más fácil con una herramienta tipo burp suite, envía directamente los campos en blanco al form del php
Eso sería lo mismo que añadir los precios de un producto en un formulario en html, cualquier podría modificarlos:
<input name="Precio" type="text" id="Precio" value="600" />
Si yo cambio el código por 300 pues pasará a costar 300 y debes validarlo por otro lado.
Pero desde hace un tiempo, un usuario se registra en la base de datos con un user y contraseña vacíos
Pues en el momento de insertar los datos en la base de datos (form action post) mira el código y valida que no se puedan dejar en blanco. Lo debes hacer en el código PHP, añadir una validación.
Si lo hace siempre con la misma IP pues baneas esa IP y problema resuelto xD Pero si cambia de IP pues estarás siempre igual.
¿Qué puedo estar haciendo mal para que se pueda registrar sin introducir datos en el formulario?
Pues que no estás validando correctamente.
¿Se ha descargado el archivo de chequeo y lo modifica online?
Si, o usando burp suite u otra herramienta.