Как запретить локальное редактирование input значения перед отправкой формы?
Непреложная истина: Все что находится на/приходит с клиента может и будет изменено с целью взлома/вреда.

Защищать  что-либо на фронтэнде абсолютно нет смысла, все проверки делаются на сервере. 

Если открыть консоль браузера и в ручную изменить код инпута, к примеру на value=2222
То и POST спокойно отправит это значение.Ваша задача проверить имеет ли клиент право на изменение объекта с данным значением. Остальное не особо важно, даже если он подставил это значение руками.
ну я к примеру привел скрытую форму. Допустим возьмем select с разными опциями. Что помешает вместо г.Барнаул написать, что-то плохое и отправить в базу?) В таком случае конечно да, можно на беке проверять есть ли вообще такое слово и кидать ошибку при его отсутствие. Вообще стараюсь такие вещи избегать и как раз все проверять на серверной части, но просто стало интересно, вдруг есть какие-то способы стандартные) В общем вопрос по большей степени для саморазвития.
А если у нас список того, что в форме формируется динамично, прям в момент загрузки страницы. Допустим мы не заполняем шаблонную форму логина и пароля, а формируем какой-то отчетный шаблон. 
Мол из базы достаем список индикаторов и для них выводим строки. Тогда удобно скрытым полем списывать ИД индикатора, что бы в дальнейшем обрабатывая понимать, что работаем именно с ним.