Допустим, я не хочу, чтобы в HTML-коде формы авторизации содержалось имя скрипта проверки данных таким образом:
<from name="authForm" method="post" action="checkAuthData.php">
Говорят, что при взломе злоумышленники не заполняют формы, а напрямую отправляют данные на скрипт (подробностей не знаю). Вопрос: если мы заменим имя скрипта на PHP-функцию, то это позволит исключить взлом подобным образом? (Нам понадобится подключить в файл PHP-скрипт через require
, но ведь этого не должно быть ввидно в выходном HTML-коде).
Кстати, о подключении функции вместо имени скрипта. Видел такое решение, но судя по тому, что у него нет плюсов, оно едва ли будет работать:
<html>
<body>
<form method="post" action="display()">
<input type="text" name="studentname">
<input type="submit" value="click">
</form>
<?php
function display()
{
echo "hello".$_POST["studentname"];
}
if($_SERVER['REQUEST_METHOD']=='POST')
{
display();
}
?>
</body>
</html>
Если так, про наверняка можно вызвать PHP-функцию через AJAX без указания файла скрипта в JS-коде.
Ещё раз повторюсь, что смысл всего этого - убрать из выходного HTML-кода, который любой может посмотреть с помощью инструментов разработчика в браузере, если это повысит безопасность.
В современной разработке на PHP принято использовать роутинг. Если простыми словами, то роутинг - это такая штука, которая позволит вам создавать совершенно разную логику в зависимости от того, с помощью какого HTTP-метода пользователь обратился к вашей странице.
Допустим, есть у нас страница авторизации по адресу /auth
(обратите внимание на то, что окончания .php
тут нет, но об этом позже). Если мы обратимся к этому адресу по методу GET, то мы получим обычную форму авторизации. Но магия роутинга заключается в том, что мы можем обратиться к этому же адресу и по методу POST, например, через AJAX-запрос, который будет происходить при отправке формы авторизации, а страница будет отвечать JSON-объектом.
Роутинг подразумевает использование ЧПУ (человекопонятные URL). То бишь вместо /news.php
адреса ваших страниц должны выглядеть как /news
. Важно понимать, что при реализации роутинга и ЧПУ вы должны не просто обрезать окончание .php
, а строить целую внутреннюю карту сайта (роутинг по-русски можно обозвать словом "маршрутизация"). То есть в зависимости от адреса обращения и HTTP-метода вы выбираете скрипт(ы), которые будут выполнены. Такой подход позволяет вам скрыть исходные имена PHP-файлов и обезопасить их от прямых обращений. Это имеет смысл только в том случае, если в публичной директории у вас доступен только один PHP-файл - index.php
, который является точкой входа во всю логику вашего сайта. Подробнее о том, что это такое и зачем нужно, я писал в ответе на этот вопрос: Возможно ли для пользователя увидеть исходных PHP-код сайта?
Все, что я назвал выше, чаще всего используют с парадигмой MVC (Model, View, Controller). Это такая магия, которая позволяет вам отделять логику скрипта от его представления. Таким образом у вас логика и HTML-разметка почти не пересекаются. В модели находится логика, контроллер лишь перебрасывает данные из модели во вью, а вью содержит уже HTML-разметку и простейшую логику шаблонов (if и циклы).
Вы можете с ужасом прочитать всё, что я написал, и ничего не понять. Потому что это довольно обширная тема, достойная серии статей, которую я пересказал вкратце своими словами. Но именно такой подход позволит вам достичь не только нормальной степени безопасности, но и поддерживать такой проект будет в тысячи раз проще. На самом деле, разумнее прибегнуть к использованию PHP-фреймворков в своих проектах, где всё это (и даже больше) реализовано из коробки. Для новичков идеальным выбором будет какой-нибудь CodeIgniter 3, в котором минимум излишнего функционала и отличная документация. Просто перейдите на любой фреймворк и большинство вопросов о безопасности и лучших практиках сами исчезнут.
Имя файла-обработчика Вы не сможете скрыть, если хотите чтобы браузер о нём знал.
А о чём знает браузер, знает и злой хакер.
Да и смысл защищать имя файла, как это хоть как-то поможет защитится?
Защищайте лучше логику скрипта.
Вызов PHP
-функции из JS - это сильно. Нереально, но сильно :)
Виртуальный выделенный сервер (VDS) становится отличным выбором
Такой себе проект придумал: создать чатДопустим, есть текстовое поле и кнопка отправить
Немного странный вопрос, но все жеЕсть сайт с минимальной шириной 1920px