Загрузка содержимого PHP из другого домена (безопасный способ)? - PullRequest
1 голос
/ 02 октября 2010

Итак, если этот вопрос уже задавался, извините. Я не совсем уверен, что искать.

Введение:

Все домены, которые я сейчас обслуживаю, размещены на моем сервере, поэтому я еще не сталкивался с этой проблемой.

Я создал структуру, похожую на WordPress, для загрузки и редактирования изображений.

Я регулярно создаю изменения в функциях и загружаю их в одну папку. Когда пользователь входит в систему, содержимое автоматически загружается в его папку.

Что я хочу сделать:

Теперь, скажем, у меня есть пользователь, который не размещен на моем сервере. Я не могу использовать copy (), но есть ли безопасный и надежный способ перенести содержимое каждого файла php (очевидно, я могу повторить) в другой файл на сервере пользователей?

Например:

В настоящее время я могу скопировать с jasonleodurbin.com на geodun.com (тот же сервер), но, скажем, хочу скопировать jasonleodurbin.com/test.php на somedomain.com/test.php.

У меня были некоторые мысли, например, дать каждому пользователю личный ключ и отправить его в файл, такой как echo.php. echo.php будет захватывать содержимое каждого файла (который был недавно изменен) и выводить его на экран. Запрашивающий сервер может взять этот контент и скопировать его в соответствующий файл .php.

Полагаю, я мог бы отправить ключ через GET, но, поскольку я никогда не баловался последствиями для безопасности чего-либо (я хобби), я не знаю, насколько это безопасно.

Есть ли какие-либо предложения или указания, которые кто-то может отправить мне?

Я ценю помощь!

Ответы [ 3 ]

0 голосов
/ 02 октября 2010

Несколько вариантов:

Загрузите новейшую версию test.php как test.phps (файл PHP Source, будет отображаться вместо запуска) в месте, известном клиенту. Затем они должны загрузить этот файл и установить его на свой веб-сервер. Плюсы: с вашей стороны не требуется много усилий, не требуется никаких ключей или шифрования. минусы: каждый может просматривать содержимое вашего PHP-файла, если знает, где искать, нет гарантии, что клиенты действительно получат обновленные версии файла.

Скопируйте файл на клиентский веб-сервер. Используйте scp, ftp или какой-либо другой метод для обновления test.php на клиентском веб-сервере при каждом его изменении. Плюсы: файл всегда будет обновляться. Достаточно безопасный, если вы используете scp минусы: для вас требуется дополнительный шаг, вам придется помнить об этом каждый раз, когда вы меняете test.php. Вам нужно будет иметь доступ к клиентскому веб-серверу, чтобы это работало

Автоматическое копирование с интервалом времени. Установите скрипт cron, который синхронизирует test.php с клиентским веб-сервером в определенное время каждый час / день / неделю / что угодно Плюсы: не требуется многократных усилий со стороны любой из сторон. Достаточно безопасный, если вы используете scp минусы: может сломаться, если что-то изменится, и вы не отправите электронное письмо при возникновении ошибки. Вам все равно понадобится доступ к клиентской машине, чтобы это работало.

Вероятно, есть и другие способы сделать это, но это всего лишь несколько, чтобы вы начали

0 голосов
/ 02 октября 2010

Используйте систему контроля версий, такую ​​как Subversion. Просто проверяйте свой код в репозитории каждый раз, когда вносите изменения, которые вы хотите отправить, и запускайте обновление с клиентов. Если вы уже используете систему контроля версий, создайте производственную ветвь, в которой вы фиксируете свои изменения, когда они готовы быть переданы клиентам.

Это можно сделать из клиентов в чистом php (слегка экспериментально) с библиотекой из здесь или здесь , с расширением PHP или с Оболочка для собственного клиента SVN.

Это обеспечивает вам безопасность, так как каждый пользователь может иметь свой собственный пароль, который вы можете отозвать, если пожелаете. Может также выполнять шифрование, проходя через ssh-туннель (я думаю, что выбор вашей библиотеки ограничен оболочкой), но на самом деле, не слишком ли сильно беспокоится о шифровании, кто будет следить за трафиком между серверами? Если вы не делаете совершенно секретные вещи.

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

Это проверенный способ сделать кодовые базы современными, поэтому я не понимаю, почему вы бы реализовали свою собственную. Это также дает вам дополнительное преимущество, позволяя откатывать изменения, если (когда) возникла проблема с обновлением кода.

0 голосов
/ 02 октября 2010

Я предполагаю, что это конфиденциальные данные.Если это так, то я бы предложил зашифровать файл с помощью ключей PGP.В любом случае вам нужен метод для отправки файла с вашего сервера на их сервер.Я не могу вспомнить, как я это сделал, но раньше я отправлял зашифрованный файл данных с нашего удаленного сервера на сервер в доме.Мы использовали ключи PGP для шифрования и дешифрования, как только он прибыл в дом.Что касается метода, который мы использовали для отправки файла через Интернет, я думаю, что мы использовали SCP (вам нужен доступ к оболочке на сервере).

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

Просто подумав, сохраните файл в защищенной папке.Попросите пользователя загрузить файл, используя curl.Я считаю, что вы можете указать имя пользователя / пароль с помощью curl.

...