2012-06-13 2 views
4

현재 서버 호스트를 표시해야합니다 (PHP에서는 중요하지 않습니다). 나는 어떤 주인인지 알지 못한다. 보안 문제없이 어떻게 할 수 있습니까? $_SERVER['HTTP_HOST']을 사용하면이 정보를 신뢰할 수 없으므로 클라이언트에서 제공됩니다 (재 작성 가능).HTTP_HOST 대신 사용할 수있는 방법은 무엇입니까?

PS :이 게시물을 읽었습니다 : How reliable is HTTP_HOST? 그러나 나는 (어쩌면 내가 제대로 검색하지 않았다 ...)

워드 프로세서에서
+0

HTTP_HOST 값을 사용하려는 대상은 무엇입니까? 그냥 화면 위로 우리를 뱉어내는거야? DB에 삽입 하시겠습니까? 링크를 사용하여 링크를 만드시겠습니까? –

+0

필요한 경우 아파치에서 일부 헤더를 위생 처리 할 수 ​​있습니다. – Tisho

+0

@georgefox : 다른 목표로 사용하고 싶습니다 : 영구 링크를 생성하고 텍스트로이 호스트와 메일을 보내십시오 (이 경우 JS 사용 가능) 데이터베이스에 저장할 수도 있습니다. –

답변

5

이 목적을 위해 사용 $_SERVER['SERVER_NAME'], 어떤 반응을 찾지 못했습니다 :

현재 스크립트가 실행되는 서버 호스트의 이름입니다. 스크립트가 가상 호스트에서 실행 중이면 해당 가상 호스트에 대해 정의 된 값이됩니다.

+0

별칭은 무엇입니까? 작동할까요? 내 서버 이름이 "test.org"이고 "test2.org", "test3.org"와 같은 일부 별칭이 있는데 내 클라이언트가 "test2.org"에 로그온 한 경우 $ _SERVER [ 'SERVER_NAME']이 (가) test.org "? ("test2.org"instired) –

+0

@ rap-2-h test2.org는 클라이언트가 요청한 호스트이므로 전달됩니다. –

0

당신은 심지어

`hostname -f` 

가 시도 (여기에 역 따옴표를 통지) 어쩌면

php_uname('n'); 

또는를 줄 수 있습니다.

+0

좋습니다, 감사합니다! http://www.php.net/manual/fr/function.php-uname.php#105524에 따르면 : "당신이 스크립트를 실행하고있는 머신은 많은 다른 호스트 이름을 서버 할 수 있으므로 URL을 만들 때 이것을 사용하지 마십시오 "그래서 제 경우에는 사용할 수 없습니다 (서버에 다른 호스트가 있음). –

+0

젠장, 방금 질문을 다시 읽었습니다. 이 경우 $ _SERVER [ 'SERVER_NAME'] 만 남습니다. –

1

보안 또는 인증 용도로 사용하지 않으려면 $_SERVER['HTTP_HOST']으로 설정해야합니다. 스크립트 아동 방문객에게 잘못된 값이있을 수 있지만 일반 사용자는 올바르게 작동하는 브라우저를 사용하게됩니다.

다른 사용자 입력처럼 취급하는 경우 보안 문제가 없습니다. 위생 처리하십시오. 파일 이름을 만들거나 명령을 실행하지 마십시오. 표시하기 전에 이스케이프 처리하십시오.

+0

감사합니다. 귀하의 분석에 대해 생각해 보겠습니다. 필자는 파일 이름을 만들거나 명령을 실행하지 않습니다. 구현하고자하는 보안 수준을 다시 생각해 보겠습니다. –

관련 문제