Las direcciones que aparecen en la barra de direcciones son siempre editables. Es imposible que el navegador te bloquee de editar manualmente una dirección, ya que es algo que pertenece a la interfaz de usuario y que se usa para poder usar en propio software. Eso creo que está claro, por lo que todo lo que puedes hacer son estrategias paralelas. Se me ocurren estas cosas:
Encriptar el valor enviado en la URL
Evitar enviar el parámetro de la URL tal cual. Si lo envías encriptado simplemente será irreconocible el valor que se está enviando, por lo que también sería irreconocible el valor que el usuario deba poner para poder irse a otra página.
En este caso la URL tendría una forma como esta:
example.com/pagina.asp?id=htYO36lkAd4
Por mucho que el usuario intente cambiar algo, lo más seguro es que no se pueda llegar a una página o identificador que exista realmente. Por supuesto, tendrías que elegir un algoritmo de encriptación de ida y vuelta, para que el valor se pueda encriptar y desencriptar. Los lenguajes suelen tener varios algoritmos a elegir. Si no, sería cuestión de instalar la librería adecuada.
Usar un iframe
En vez de navegar a través del propio navegador, puedes llevar al usuario en su navegación a un iframe. El iframe no muestra la dirección de la página que hay dentro, por lo que el usuario debería saber cómo modificar esa página manualmente (con las herramientas de desarrolladores podría)
Navegar a través de un popup
Parecido a un iframe, una posibilidad sería abrir un popup que no tenga la dirección visible, de modo que no sea posible editarla. Pero esto depende mucho de los navegadores, puesto que algunos por seguridad siempre van a mostrar la url de la página que está en el popup.