CURL vs allow_url_fopen Что безопаснее для получения изображений? - PullRequest
3 голосов
/ 05 июля 2011

У меня есть сценарий, с помощью которого пользователи могут ввести URL-адрес изображения (с другого веб-сайта), а затем обрезать его с помощью JS и сохранить его на моем сервере.

У меня вопрос ... при получении изображения с другого сервера безопаснее использовать CURL или allow_url_fopen (через file_get_contents ())? Или есть предпочтительный / безопасный метод?

Безопасность - большая проблема для меня, так как я знаю, что это очень опасная процедура - скрипт должен работать только с файлами изображений, если это имеет значение.

Спасибо

Ответы [ 5 ]

4 голосов
/ 06 июля 2011
Обработка ошибок

curl намного лучше, чем file_get_contents(). Если вы заботитесь об этом, возможно, вам стоит пойти керлом. Если вам достаточно простого «упс, это не сработало», то file_get_contents() является вполне приемлемым сочетанием клавиш.

2 голосов
/ 06 июля 2011

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

В некоторых случаях вы можете перезаписывать важные файлы или даже перезаписывать системные файлы. Загрузка сценариев и т. Д. На сервер с целью их выполнения через веб-сервер также является проблемой.

Так что это не солнечный свет и не радуга, как люди, указывающие здесь.

Возвращаясь к вашему вопросу, allow_url_fopen - это директива конфигурации. Я предполагаю, что вы имели в виду file_get_contents () . Либо все будет хорошо. Как отмечали другие, Curl немного более многословен и быстрее.

Если вы в конечном итоге используете file_get_contents (), убедитесь, что вы никогда не включаете нефильтрованную переменную в качестве параметра.

0 голосов
/ 10 сентября 2015

cURL имеет больше опций и возможностей.

Оба одинаково безопасны (или небезопасны при неправильном использовании).

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

Кроме того, если этому самому проекту в дальнейшем понадобятся новые функции, вам не придется переписывать все с помощью cURL, если file_get_contents недостаточно.

В ответе этой темы показана замечательная функция cURL: Заменить file_get_content () на cURL?

0 голосов
/ 05 июля 2011

Загрузка файла не является проблемой безопасности вообще, независимо от того, является ли это ваш сервер или ваш собственный компьютер, или приложение / код, который вы используете для его загрузки :) Это ли вы выполняете файл: D

Все, что вам нужно сделать, это просто убедиться, что вы не собираетесь ИСПОЛЬЗОВАТЬ / ВКЛЮЧАТЬ что-либо в файле.Поскольку вы собираетесь только обрезать изображение, я думаю, что вы готовы пойти:)

Я предлагаю cURL tho, allow_url_fopen может вызвать проблемы с безопасностью в других местах вашего кода.

0 голосов
/ 05 июля 2011

завиток, как правило, был бы более безопасным способом.С вашей стороны потребовалось бы явное решение о дизайне / кодировании, чтобы результаты curl могли напрямую влиять на вашу программу, тогда как разрешение URL-адресов в функциях f * () позволило бы

include('http://example.com/really_nasty_remote_takeover.php');

произойти без ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...