Достаточна ли защита сайта php?
Главная страница — Страница с формой авторизации — php авторизации
Всё, начиная с php авторизации, защищено от прямого доступа через .htaccess.
Гуглим "php роутинг|маршрутизация". 
И привязываться к конкретному Апачу сейчас - не стоит.
файл с защитой от sql-инъекций — файл подключения к БД MySQL
Если хочется чистого РНР - PDO и подготовленные запросы покрывают и то, и другое.
А вообще стоит поинтересоваться PSR и фреймворками - в них, внезапно, собираются не костыли и говнокод, а те самые best practices, которые вы не знаете, где почитать. Phptherightway вам вообще попадался?

Логин и пароль хэшируются
Логин-то на хрена? Чтобы при следующей регистрации не знать, использован такой или нет?
Как уже многие писали - не стоит сейчас писать самому что-то уже давно реализованное по лучшим практикам. Как минимум стоит использовать PDO или же ORM. 
А еще лучше использовать все это вместе с каким-нибудь популярным фреймворком по типу Laravel. Там уже все реализовано: от аутентификации и авторизации до запросов к сторонним API.

Если же хотите что-то свое написать без фреймворков - то по безопасности ничего конкретного нельзя посоветовать. Есть определенные правила, которых придерживаются большинство разработчиков.

- использовать на сайте SSL
- пароль в базе нужно хранить в хешированном виде.
 и т.д.

Самые распространенные угрозы описаны в OWASP TOP 10. Почитайте на досуге.

Хешировать пароль на клиенте тоже правильно. Задача сервиса не только запретить доступ к сервису злоумышленникам, но и сохранить пароль клиента в тайне. Передавая пароль на сервер в открытом виде, пусть даже и по защищенному соединению, можно его отдать злоумышленникам. Как минимум запросы могут логироваться, и пароль в открытом виде будет храниться в логах. Злоумышленник может завладеть каким-либо образом доступом к серверу и украсть пароли тысяч или миллионов пользователей. Или же встроить в PHP скрипт определенный код, который будет пароли передавать на удаленный сервер (при владении доступом к серверу бекэнда).

Да, можно высунуть наружу только балансер или фронтэнд, а бекэнды держать без доступа к внешней сети. Но а если злоумышленником является разработчик/сотрудник, который может вытащить данные из этого сервера?

Хеширование пароля на клиенте является хорошей практикой. Facebook делает что-то похожее. В таком случае ни владелец сервиса, ни злоумышленник не смогут получить доступ к открытому паролю пользователя. Это защитит другие учетные записи пользователя (если он использует один пароль или главную часть пароля в других сервисах).