Я сделал интеграцию платежных шлюзов на существующем веб-сайте. Платежный шлюз дал мне API, который я использовал, и сделал кодировку и сохранил ее в php-файле pay.php
У меня есть форма pay.php
на главном веб-сайте и при нажатии submit, он отправляет все необходимые данные в pay.php
через post
а затем этот файл делает все остальное и отправляет данные на платежный шлюз.
Так как этот файл pay.php
хранит чувствительные данные, я хочу его защитить, чтобы никто другой не мог получить к нему доступ через веб-браузер, например, через http://domain.com/pay.php
или загрузить его.
Теперь, когда я знаю, что обычно вы не можете просто скачать файлы .php
, я видел сайт на днях, который был способен загрузить мой блог WordPress вместе с файлами .php
.
Также каждый раз, когда pay.php
файл pay.php
создается ссылка на платеж, поэтому мне нужно убедиться, что только сайт http://www.domain.com
может использовать этот файл и не имеет стороннего партнера.
У меня уже есть несколько идей в моей голове, таких как ограничение доступа с использованием удаленного IP и т. Д., Но хотелось бы знать, как наилучшим образом решить проблему.
Чтобы добавить к ответу Commusoft и дать небольшую альтернативу.
Этот фрагмент .htaccess
запрещает запросы файла php через браузер и гарантирует, что вы можете включать только файл из другого php-файла.
<Files *.php> Deny from All </Files>
Поместите это в отдельный каталог, где находится pay.php
.
Я думаю, что лучший способ справиться с этой проблемой платежа – превратить pay.php
в полный класс и использовать его объектно-ориентированную. Таким образом, вы можете использовать функциональность в любом месте и легко передавать переменные.
.htaccess
. И пользователи не будут знать о ваших реальных файлах PHP. Если вы правильно настроите свой веб-сервер (Apache, …), веб-сервер будет отображать PHP, поэтому никто не сможет увидеть исходный код файла . Таким образом, существует некоторая неотъемлемая защита . Но, разумеется, его можно взломать .
Теперь хакеры, конечно же, хотят взломать веб-сайт. И у вас нет информации о том, какие данные будут опубликованы: это зависит от браузера. Хакеры иногда изменяют контент до отправки запроса в надежде, что скрипт PHP каким-то образом потерпит неудачу и покажет, например, SQL-запросы и т. Д. Первое, что вам лучше сделать, это отключить отчет об ошибках :
error_reporting(0);
Поскольку хакеры могут найти некоторые предупреждения / ошибки, наиболее полезные для определения базового алгоритма и его коррумпирования. Сделав это явно в файле PHP, вы предотвратите это, если вы измените настройки сервера, все внезапные ошибки снова появятся.
Кроме того, вы должны убедиться, что у пользователя нет прямого доступа к конфиденциальным данным. Это может быть достигнуто путем помещения конфиденциальных данных в отдельный файл (например, secure.php
) и include_once()
чтобы вы могли прочитать его данные.
Как говорят @Havenard и @AlexHowansky, вы также можете хранить такие файлы ( secure.php
) лучше за пределами общедоступных каталогов . Например, выше public_html
. Это не всегда полностью решает проблему, потому что некоторые веб-серверы чувствительны к URL-инъекции (указав http://www.domain.com/../securefolder/secure.php
, иногда вы можете получить доступ к файлу над общедоступным каталогом ).
Как говорит @TomKriek, вы также можете предоставить дополнительную защиту «безопасной папке», вставив файл .htaccess
который содержит следующие строки:
<Files *.php> Deny from All </Files>
Это означает, что веб-сервер – опять же, если он настроен правильно – предотвратит доступ пользователей из всех .php
файлов в каталоге.
Наконец, вам лучше предоставить файлы надлежащим разрешениям : если PHP-движок работает как тот же пользователь, что и владелец файлов, вы можете предоставить ему 600
прав доступа ( chmod 600 secure.php
) или 640
если PHP-движок работает на другой пользователь, чем владелец файла, но в той же группе пользователей или в худшем случае 644
чтобы хакер не мог изменить файл (или, по крайней мере, не должен). Вы также можете изменить владельца файла на www-data
, запустив chown www-data secure.php
чтобы владелец был веб chown www-data secure.php
, и вы можете сделать его более жестким. Эмпирическое правило всегда дает ему наименьшие права доступа для правильной работы .
Вы также можете сделать файлы доступными только для чтения, как только они будут реализованы, установив права на 400
, 440
или в худшем случае 444
. В этом случае, по крайней мере, хакер не может ввести свой банковский счет в качестве получателя платежа;).
В заключение, при разработке / внедрении защищенного сервера лучше использовать многоуровневый подход, в котором принимаются несколько мер, чтобы, если одна мера могла потерпеть неудачу, другие, надеюсь, все равно не смогут хакеру получить доступ к серверу / файлам.