Нужно ли делать валидацию формы на фронте и бэке одновременно?
какой из этих путей «джедайский»?
Джедайский путь только один и он такой: и на фронте на JS и на бэке на PHP.
Любые данные, которые могут прилететь на бэкенд, надо по-умолчанию считать опасными и обязательно валидировать.
Валидацию на JS пользователь может отключить с помощью консоли. Если нет валидации на PHP, то пользователь может загрузить на сервак любой PHP-файл (скажем, вместо аватара) и потом запустить его на выполнение. (sql-иньекции и все такое) Так что от сюда и вывод по поводу должна ли быть валидация на PHP.