Собственно вопрос по сабжу. Тема, наверное, избитая.
----------------------------------
Вводная:
----------------------------------
Представим себе серьёзный ресурс, разработанный по MVC.
Обычным сайтом это сложно назвать. Назовём его апи-ориентированным веб-приложением.
Делается ресурс с такими планами, что в будущем бэковая часть его будет апи-ориентированная, то есть один единый функционал, и будет множество клиентов (назовём их "тонкими клиентами", которые должны лишь дёргать за рычаги апи) например - мобильное приложение под андроид, та же веб-морда самого сайта, какой-то windows-клиент etc.
Веб-приложение, ясное дело, будет плотно взаимодействовать с пользователем, анализировать входящие данные, реагировать на его действия и тд.
И вот возникает вопрос - как правильно организовать проверку входящих данных, чтобы она не была раскинута по десяткам модулей, а была централизована, находилась в удобном месте, чтобы можно было качественно фильтровать информацию не перерывая тонны кода на разных платформах?
----------------------------------
Свои мысли:
----------------------------------
С одной стороны кажется, что удобно бы реализовать проверку входящих данных на стороне JavaScript, то есть на фронте, сразу отсекать ненужное, делать всяческие проверки и плюхать предупреждения, отправляя уже в апи очищенную информацию.
Но тут два момента:
1. Никому не помешает направить пост-запрос в обход JavaScript-кода. Получается, что это всего лишь защита от дурака. Да и защитой нельзя назвать толком, а всего лишь удобство.
2. Делается ведь с целью в будущем писать клиенты под разные платформы, оставив логику на php, то есть они все обязаны будут контролировать вводимые пользовательские данные. А это есть дублирование.
С другой стороны - можно оставить всё на стороне апи, то есть бэка.
Но как-то будет не особо правильно, например, каждый раз перезагружать страницу пользователя при возникшей ошибке, ждать ответа от удалённого сервера на мобильном приложении, расходуя трафик, при вводе неправильного формата эмэйла, или пхп-кода в текстовое поле.
Смешивая же проверки на фронте и бэке - будет избыточность.
На форме JavaScript'ом проверил на запрещённые символы, в приложении под андроид java-кодом проверил, повторил эту же проверку на php-скрипте.
Где найти тот заветный правильный баланс?
_____________
"О наших провалах знает весь мир, о наших победах не знает никто." ЦРУ