1. Можно ли с другого домена узнать содержимое файлов PHP (в том числе файла, где хранятся логин и пароль к базе данных)? Если да, то как обезопасить свой сайт?
2. У меня есть файл, который принимает методом POST данные для регистрации пользователя, делает проверку данных и в случае успеха заносит их в базу данных. Данные приходят с помощью AJAX, то есть страница с формой регистрации не перезагружается, а ждёт ответа сервера. Правильно ли я понимаю, что данные могут прийти и с другого домена? В таком случае как запретить регистрацию пользователей не через мою форму?
1. нет, если у вас нормально настроен сервер и на нем нет никаких уязвимостей. Если дыры есть - универсального метода все закрыть не существует, придется нанять толкового админа-безопасника или довериться специалистам хостера.
2. можно добавить в форму одноразовый csrf-токен, например.
1. Если мой файл на другом домене вставляется через include, получается, содержимое файла пересылается этому домену и значение любой переменной можно получить через echo? Или include для других доменов не сработает?
2. Тогда как решить эту проблему? Как она решается на крупных проектах, например в соцсетях? Предполагаю, что как минимум нужно проверять количество регистраций с одного IP-адреса, чтобы не было массовых боторегистраций.
smigles, Если через http(s) запросить PHP-файл, то правильно настроенный сервер вернёт не текст файла, а результат его работы.
Тут всё зависит от того, против чего надо защищаться. Если против массовых спам-ботов, то есть разные способы, если против направленной атаки, то разве что капча.
xmoonlight, И что даёт такой виджет, если вы хотите защитить свою форму на своём же сайте? Она всё равно будет посылать все данные вашему же серверу, а значит можно обмен просмотреть в панели разработки браузера и подделать.
Любые ключи будут в JS-коде, а он тоже вскрывается достаточно легко.
Rsa97, вывод формы (рендер) - выполняется только после корректного токена. А функция формирования токена - грузится динамически с серва и полиморфная (+обфускация, чтобы скучно не было...).
Время на дебаг новой логики и вычисление нужного токена - 5 секунд.