2012-07-09 5 views
5

PHP 변수 $ _SERVER [ 'SERVER_NAME']을 (를) 위조하거나 위조 할 수 있습니까? 양식 게시의 보안 수단으로이를 사용할 계획이었습니다. 변수가 내 사이트 이름 (www.example.com)인지 확인합니다. 나는 HTTP_REFERRER가 가짜 일 수 있다는 것을 알고 있지만, 나는 이것에 대해 확신하지 못했다.

감사합니다.

+1

항상 귀하의 서버와 동일합니다. 요청을 보낸 서버가 아닙니다. – sachleen

답변

2

가짜 일 수는 없지만 항상 귀하의 사이트 이름을 반환합니다. 동일한 스크립트에서 여러 사이트를 실행하는 경우, 예를 들어 제공된 호스트 이름에 따라 다른 데이터베이스를 사용하는 경우에 유용합니다.

PHP documentation는 말한다 :

'SERVER_NAME' 
    The name of the server host under which the current script is executing. If the script is running on a virtual host, this will be the value defined for that virtual host. 
+3

'SERVER_NAME'과'HTTP_HOST'를 혼동하고 있습니다. – BalusC

3

방문자는 일반적으로 위장 할 수 없습니다. 하지만 특정 도메인에서만 사용할 수 있도록 특정 SERVER_NAME에 스크립트 사용 권한을 적용하려고한다고 생각합니다. 이 경우 대답은 '예'입니다. 이 변수는 확실히입니다.

이유는 간단하기 때문에 서버가이 값을 설정합니다. 대부분의 경우 아파치 모듈로 실행되는 PHP를 갖지만 다른 아파치 모듈을 가지고있는 경우가 있습니다. PHP가 NGINX 또는 IIS와 함께 CGI 모드로 실행되는 경우가 있으며 때로는 CLI로 실행되는 PHP를 사용자 정의 클라우드에 배포 된 내장 서버. 이러한 서버는 해당 변수를 설정해야합니다.

항상 수동 할당이 있습니다.

$_SERVER['SERVER_NAME'] = ... // this can go above all your scripts 
관련 문제