El problema de GET y que los datos sean visibles en la URL, no es tanto que el usuario pueda modificarlos.
Es sobre todo un problema de seguridad. Esa URL, con los datos personales, queda guardada en el historial de navegador.
Esto implica que si se trata de un ordenador compartido, otra persona puede consultar el historial de navegación y ver esos datos personales: nombre, teléfono, domicilio, nº seguridad social, contraseñas, claves.... La privacidad de esos datos es nula.
En ese caso, usar POST no es que sea mejor, es que es imprescindible.
Sin embargo, en otros casos donde no tenga importancia la privacidad, GET puede ser interesante.
Por ejemplo, en un buscador. En el mismo Google.
Supón que quiero compartir con otros una búsqueda de "Cursos Java", o guardarla para futura referencias.
Gracias a GET, tengo un enlace para compartir y guardar:
https://www.google.com/search?q=curso+javaNo será necesario volver a escribir esos términos en el formulario de búsqueda de Google, basta con clickar en ese enlace y ya obtengo la búsqueda.
Esto en cambio, no es posible con POST.
Por ejemplo en este mismo foro, si vamos a la
opción de búsqueda, escribimos unos términos y hacemos la búsqueda obtendremos unos resultados.
Pero el formulario funciona con método POST, así que no voy a disponer de una URL que represente la búsqueda que he hecho.
Por tanto no voy a poder guardarla, ni compartirla...siempre que quiera replicar esa búsqueda, tendré que teclear de nuevo esos términos en el formulario.
Así que en este caso puede ser más interesante usar GET..., o tal vez no..., quizás queramos proteger la privacidad del usuario y evitar que los términos de su búsqueda queden reflejados en una URL en el historial...
Como ves todo tiene unos contrapesos, no hay uno mejor o peor. Son diferentes y usar uno u otro dependerá de cada caso.