2012-02-28 3 views
1

나는 이와 같은 페이지가 있습니다. 사용자가 양식에 URL을 작성하여 제출하십시오. URL이 제출되면 해당 페이지를 CURL과 연결하여 문자열을 검색합니다. 문자열을 찾으면 URL을 데이터베이스에 추가합니다. 그렇지 않으면 사용자에게 오류가 발생합니다.PHP : CURL을 사용할 때의 보안?

나는 URL을 htmlspecialchars()로 sanitize하고 A-Z, 1-9를 허용하는 정규식도 제공합니다. 기호. 또한 htmlspecialchars()를 사용하여 다른 웹 사이트에서 검색 한 내용도 살균합니다.

제 질문은 다음과 같은 URL을 입력 할 수 있습니까? www.evilwebsite.com/shell.exe 또는 shell.txt

PHP가 실행하거나 간단히 HTML 출력을 찾으시겠습니까? 그것이 안전한지 그렇지 않은지, 내가 어떻게해야합니까?

감사합니다.

ps. allow_url_fopen이 비활성화되었습니다. 그것이 내가 컬을 사용하는 이유입니다.

답변

5

여기에 htmlspecialchars 또는 Regex가 필요한 이유가 표시되지 않습니다. 필요하지 않습니다. 또한 PHP가 cURL을 사용하여 검색된 내용을 "자동으로"파싱 할 방법이 없습니다. 그래서 네, 출력과 함께 eval 같은 것을하지 않는 한 저장됩니다.

그러나 나중에 검색된 콘텐츠를 처리 할 때 입력 내용이 사용자가 제공하고 그에 따라 처리해야한다는 점에 유의하십시오.

+0

사실, 검색된 콘텐츠로 수행하는 유일한 작업은 기본 정규식 스캔을 수행하는 것입니다. 예를 들어, 검색된 내용에 "Hello"텍스트가있는 경우 데이터베이스에 URL을 삽입합니다. 그렇지 않으면 "Hello page is not this page."와 같은 사용자 오류가 발생합니다. "Hello"텍스트를 검색하는 동안 취해야 할 조치가 있습니까? – Aristona

+0

@ AnılÜnal : 아니요, 완벽하게 안전합니다. 하지만 불필요한 위생 상태를 제거해야합니다. 특정 URL이 손상되어 서비스 거부가 발생할 수 있습니다. –

+0

htmlspecialchars()는 평가 눈에서 당신을 구해주지 않습니다 :-) 나는 그의 관점이 XSS를 막는 것이라고 생각합니다. –

1

curl은 요청을하고 서버는 서버가 데이터를 다시 보냅니다. 웹 서버에 실행 파일이 있다면 파일의 바이너리를 돌려 받게됩니다. 디스크에 파일을 쓰고 실행하지 않는 한 아무런 문제가 없어야합니다. 그러한 의미에서의 보안은 문제가되어서는 안됩니다.

+0

서버가 사용하고있는 cURL 버전에 취약점이 있거나 PHP 스크립트가 구문 분석하는 PHP 스크립트가없는 경우 (제공된 URL을 호스트하는 경우) –

+0

데이터가 보안 결함을 일으킬 수는 있지만 cURL은 안됩니다. 내가 생각할 수있는 유일한 취약성은 버퍼 오버 플로우이지만 PHP는이를 처리하고 보호합니다. 어떤 종류의 취약점에 대해 생각하고 있습니까? –

+0

@Patrick : PHP가 처리하고 보호합니다. 그것은 나에게 뉴스 다. 또한 PHP와 같은 소프트웨어에서 특히 많은 종류의 취약점이 존재합니다. 그러나 웹 서버를 샌드 박싱하지 않으면 위험에 대비하여 많은 노력을 기울일 수 없으므로 이는 실제로 질문과 관련이 없습니다. –

관련 문제