2012-04-27 3 views
6

웹 사이트 URL이 가득한 데이터베이스가 있는데 기본 키는 웹 사이트의 $_SERVER["HTTP_HOST"]입니다.

사용자가 ... www.my-epic-example-url.com으로 이동하면 데이터베이스를 연결하고 해당 웹 사이트의 $_SERVER["HTTP_HOST"]을 사용하고 해당 웹 사이트를 참조하는 모든 데이터를 가져옵니다!

내가 알고 싶은 것은 얼마나 안전합니까 $_SERVER["HTTP_HOST"]?

외부에서 수정할 수 있습니까?

물어 유일한 이유는 내가 잠시 되돌려 artical를 읽을 수 있기 때문에

이 사실인가 ... 그것이 안전하지 않은이기 때문에 $ _SERVER을 사용할 때주의 말 (이것은 어디 캔트 기억)인가?

+2

[중복되는 $ _SERVER 변수가 있습니까?] (http://stackoverflow.com/questions/6474783/which-server-variables-are-safe) – mellamokb

+0

지금이 복제본으로 닫지 마십시오. [어느 $ _SERVER 변수가 안전합니까?] (http://stackoverflow.com/questions/6474783/which-server-variables-are-safe)에서 'HTTP_HOST'에 대한 자세한 설명을 보려면 여기를 클릭하십시오. . – deceze

답변

13

$_SERVER["HTTP_HOST"]은 클라이언트에서 보낸 HTTP Host 헤더입니다. 따라서이 헤더는 일반적으로 안전하지 않습니다..

, 당신은 웹 서버가 차례로 HTTP Host 헤더에 의해 트리거되는 가상 호스트 설정, 스크립트를 기반으로 실행되는 스크립트를 결정하는 일반적인 가상 호스트 설정에있는 경우 하지 않는 한 실행되지해야 해당 헤더에 알려진 화이트리스트 값이 수신되었습니다.

웹 서버가 Host 헤더를 신경 쓰지 않고 모든 요청에 ​​대해 특정 스크립트를 실행하는 경우이 값은 절대적으로 다를 수 있습니다.

+0

당신은 속임수에 대한 포괄적 인 답변에이 중 일부를 추가해야합니다. VirtualHost 부분을 구체적으로 설명하지 않았습니다. –

+3

완료, 다른 답변이이 참조됩니다. :) – deceze

+0

그들은 HTTP 요청에 절대 URI를 사용하는 것과 같이 VirtualHost 제한을 우회하는 것으로 알려진 방법이므로 이는 재생하기 쉬운 호스트 헤더로 연결됩니다. 그래서 * 일반적으로 안전하지 않은 *은 매우 사실입니다. – regilero