2011-07-05 2 views
3

사용자가 다른 웹 사이트의 이미지 URL을 입력 한 다음 JS를 사용하여 잘라내어 내 서버에 저장하는 스크립트가 있습니다.CURL 대 allow_url_fopen 이미지를 가져 오는 것이 더 안전합니까?

내 질문은 ... 다른 서버에서 이미지를 가져올 때 CURL 또는 allow_url_fopen (file_get_contents()를 통해)을 사용하는 것이 더 안전합니까? 또는 선호하는/안전한 방법을 사용할 수 있습니까?

보안은 매우 위험합니다. 매우 위험한 절차입니다. 스크립트가 차이를 만드는 경우에만 스크립트가 이미지 파일에서 작동해야합니다.

감사

답변

-2

컬은 일반적으로 안전한 방법이 될 것입니다. 이 기능은

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

오류없이 발생 할 것 f를 *에서 허용하는 URL을()하는 반면, 직접 프로그램에 영향을 미칠 컬의 결과를 허용하도록 부분에 명시 디자인/코딩 결정을 내릴 것입니다.

+2

포함 '()'보다 제한'allow_url_include'하지 allow_url_fopen' '에 의해 제어된다. 'file_get_contents()'를 사용하는 것은 무해합니다. – duskwuff

0

파일을 다운로드하는 것은 서버인지 또는 자신의 컴퓨터이든 또는 다운로드하는 데 사용중인 응용 프로그램/코드와 상관없이 보안 문제가되지 않습니다. 파일을 실행 중인지 여부는 D

입니다.

파일에서 EXECUTE/INCLUDE를 수행하지 않기 만하면됩니다. 이미지 만 자르려고하기 때문에 나는 당신이 갈 수 있다고 생각합니다.

나는 cURL을 제안한다. allow_url_fopen은 코드 내의 다른 곳에서 보안 문제를 일으킬 수있다.

4

curl의 오류 처리 방식은 file_get_contents()보다 낫습니다. 그 점에 신경 쓰면 아마도 컬이 갈 길입니다. 간단한 "oops, does not was"가 충분하다해도, file_get_contents()은 완벽하게 받아 들여질 수있는 지름길입니다.

2

우선 보안 문제에 대한 깊은 토론을 원한다면. 파일 다운로드는 실제로 무엇을하고 있는지 모르는 경우 보안 문제가됩니다.

경우에 따라 중요한 파일을 덮어 쓰거나 시스템 파일을 덮어 쓸 수도 있습니다. 웹 서버를 통해 스크립트를 실행할 의도로 서버에 스크립트 등을 업로드하는 것도 문제가됩니다.

그래서 여기는 사람들의 햇살과 무지개가 아닙니다.

위로 질문, allow_url_fopen 구성 지시문입니다. 나는 당신이 file_get_contents()을 의미했다고 가정합니다. 어느 쪽이든 잘 할 것입니다. 다른 사람들은 Curl이 좀 더 장황하고 더 빠름을 지적했습니다.

file_get_contents()를 사용하여 끝내려면 필터링되지 않은 변수를 매개 변수로 포함하지 마십시오.

0

cURL에는 더 많은 옵션과 가능성이 있습니다.

둘 다 똑같이 안전합니다 (또는 잘못 사용하면 안전하지 않습니다).

cURL을 사용하는 것이 현명합니다. 더 강력한 기능으로 사용자의 경험을 발전시켜 향후 프로젝트에서 사용할 수 있습니다.

또한이 프로젝트가 나중에 새로운 기능을 필요로하는 경우 file_get_contents가 충분하지 않으면 cURL로 모든 것을 다시 작성할 필요가 없습니다.

스레드의 응답은 좋은 컬 기능을 보여준다 Replace file_get_content() with cURL?

관련 문제