컴퓨터소프트웨어

기능에서 PHP 전역 변수. PHP에서 전역 변수를 확인하십시오

당신이 많은 것을 알 필요가 다양한 기능이 전체 사이트를 만듭니다. 그러나 그 독특한 무엇을 만들 수 있습니다 - 그것은 PHP입니다. 프로그래밍 언어에서 전역 변수가 매우 자주 사용하지 않는,하지만 때로는 그것이 작동하는 방법을 알고, 때로는 필요하다. 즉 그것이 어떻게 작동하는지, 우리는이 문서에서 어떻게 할 건데 무엇을 연구하는 학문이다.

범위

그래서 변수가 결정되는 상황을 호출합니다. 대부분의 경우, 그들은 하나 개의 범위를 가지고있다. PHP 전역 변수가 다른 파일에서로드 할 때, 다음이 포함 (포함) 및 요구 될 수있다 (필요).

기본적으로, 그들은 로컬 기능 범위로 제한됩니다. 어떻게 더 어떤을 사용할 수 있습니다, 그 경계에서 변수 볼 파일을 만들려면? 이를 위해, 그리고 PHP 전역 변수로 제공됩니다.

키워드 "글로벌"

그리고 여기 전역 변수는 PHP로 선언하는 방법은? 이 목표를 달성에서 "글로벌"우리에게 말씀을 도움이 될 것입니다. 당신이 세계 (narimer, 글로벌«변수 ")를 만들고 싶어 변수 앞에 배치하는 것이 필요하다.

이러한 표시의 구현 후, 데이터는 파일로 작업 할 수 있습니다. 어딘가에이 변수에 대한 참조가있는 경우, 프로그램은 항상 글로벌 버전에 관심을 지불 할 것입니다.

왜 그런 이상한 언어? 사실은 동시에 로컬 버전이있을 수 있음. 그러나 그들은 발표 그 파일을 독점적으로 사용할 수 있습니다. 그리고 모든 나머지 전역 변수를 PHP 클래스를 역할을합니다. 따라서 당신은주의해야합니다. 글로벌 A : 그리고 의심의 여지가 있다고, 여기에 그들이 어떻게 생겼는지의 예입니다.

하나 개의 파일이 여러 변수에 액세스 할 경우 때문에, 그들이 충돌하게됩니다. 로컬 또는 글로벌 변수에 실패 모두를 읽거나한다 - 확인을위한 그러나 우리는 말할 수 없습니다. 이 함수에 등록하는 경우에 따라서, 그것은 아무 문제가 없어야합니다. 그러나 국경에 대한 변수의 사용은 문제가 될 수 있습니다. 따라서, 아무데도 없다는 것을 면밀히 모니터링하고 있는지 확인하는 데 필요한 코드의 제도의 구조도 상기 충돌의 전제 조건이 일어났다.

기록의 다른 실시

그것은 PHP에서 다른 방법으로 전역 변수를 만들 수 있습니까? 예, 심지어 하나. 먼저,이 $ GLOBALS를 생각해 보자. 이것은 연관 배열이다. 그것의 핵심은 - 이름입니다. 콘텐츠의 값이 전역 변수로 작용한다. 이 발표 후 배열 모든 범위에 존재한다는 것을 알아야한다. 이것은 자동 전역을 믿을만한 이유를 제공합니다. 너무 보이는 : $ GLOBALS [ '변수'].

미리 정의 된 / 슈퍼 전역

모든 프로그래밍 언어에서의 기능 중 일부 전세 몇 가지 이름이있다. 따라서, 작동하지 않습니다 같은 이름의 PHP 전역 변수로 만들 수 있습니다.

이 프로그래밍 언어는 고유의 특성을 가지고있다. 그래서, 여기에 미리 정의 된 변수는, "최고"를 설치하지 않는 즉, 그들은 모든 지역에서 사용할 수없는 것이 중요하다. 어떻게 그것을 해결할 수 있습니까? 미리 정의 된 변수는 일부 지역에서 사용할 수있었습니다 다음과 같이 :. 글로벌«변수, 그것은 "선언해야 바로 전에 말한 것과 같은 것 같다? 그것은 아니지만 상당히 사실이다. 우리가 이미 예 "전투"를 살펴 보자 :

  • 글로벌 $ HTTP_POST_VARS;
  • $ HTTP_POST_VARS [ '이름'] 에코.

당신은 그들 사이의 차이를 느낄? PHP 전역 변수에 반드시 함수 내에서 사용 할 필요는 없습니다. 그것도 그 안에 포함 된 파일에 배치 할 수 있습니다.

링크 및 안전

당신이 볼 수 있듯이, PHP에서 전역 변수가 문제가되지 않습니다 만들 수 있습니다. 그러나 특정 상대 링크가? 글로벌 사용하는 경우 예, 예기치 않은 동작이있을 수 있습니다. 그러나 그 전에, 약간의 뒷이야기.

버전 4.2.0에서 기본 설정 register_globals으로 지시어는 온 상태에서 오프로 변경되었습니다. 대부분의 사용자의 경우이 매우 중요하지만, 헛되이하지 않습니다. 결국, 그것은 직접 개발 한 제품의 보안에 영향을 미칩니다. 당신이해야 할 경우이 매개 변수에 대한 변수 글로벌, PHP-지시어는 직접 영향을받지 않습니다. 그러나 잘못된 사용은 이미 선례 보안을 만들 수 있습니다.

예, HTML 양식을 보내 위해 작성된 코드의 실행이 필요한 다른 변수를 초기화하기 전에 그래서 register_globals를가 켜져 있는지. 따라서 그것을 해제하기로 결정했다.

왜 PHP는 글로벌 변수에이 지침의 상태는 많은 빚을지고있다? 사실은 개발자의 상태가 확실하지 항상 때 자신이 어디에서 왔는지의 질문에 대답 할 수 있다는 것입니다. 한편으로는 코드를 작성하는 것이 더 쉽습니다. 그러나 다른 한편으로 - 그것은 보안 위험이다. 따라서, 혼합 오류뿐만 아니라 데이터를 피하기 위해와 지시어는 비활성화되었습니다.

이제 없습니다 / 보안 코드뿐만 아니라 방법과 같은 글로벌 PHP 변수의 발표가 데이터 조작에 시도 동반되는 경우를 감지 할을 살펴 보자. 이뿐만 아니라 아름다운을 만들기 위해 필요하다,뿐만 아니라 지속적으로 사용 가능한 첫 번째 사람을 단속하지 않은 사이트를 작업.

악성 코드

의 그 변수가 권한을 부여받은 사람들도 마찬가지입니다 설정할 수 있습니다 :

경우 (authenticate_user ()) {
$ 권한 부여 = TRUE;
}

경우 ($의 권한 부여) {
"/highly/sensitive/data.php"를 포함한다;
}

이 상태에서, 변수가 자동으로 설정 될 수있다. 데이터를 간단하게 교체 할 수 있으며, 그들의 기원의 소스가 설정되어 있지 않은 점을 고려, 다음 사람이 같은 시험을 통과하고 다른 사람이 척 할 수 있습니다. 원하는 경우, 공격자 (또는 그냥 궁금하지만, 경험이없는 사람은) 우리의 논리를 손상 할 수있다.

우리는 지시어의 값을 변경하는 경우 우리가 필요에 따라,이 코드는 제대로 작동합니다. 그러나 변수의 초기화는 프로그래밍뿐만 아니라 좋은 톤이지만, 또한 우리에게 스크립트의 안정성의 특정 보증을 제공합니다.

코드의 신뢰성 버전

당신은 끄거나 지시를 작동하거나,이 목표를 달성하기 위해 더 복잡한 코드를 처방 할 수 있습니다. 예를 들어, 다음과 같습니다 :

만약 (는 isset ($ _ SESSION [ '이름'])) {

에코 "안녕하세요 {$ _ SESSION [ '이름']} ";

} 그밖에 {

에코 "안녕하세요 게스트 을";
"에 오신 것을 환영합니다 사용자를!"에코;

}

이 경우 교체, 어려움이있을 것이다. 그러나 여전히 - 가능합니다. 이렇게하려면, 당신은 빠른 응답 도구가 제공되었다주의해야합니다. 당신이 PHP에서 전역 변수를 포함 할 경우, 다음과 같은 도구를 사용할 수 있습니다 : 우리는 범위가 얻은 값이 무엇인지 알고 있다면, 일치로이를 확인하는 스크립트를 등록 할 수 있습니다. 물론, 그것은 또한 대체 값에 대한 완전한 보호를 보장하지 않습니다. 그러나 너무 많은 옵션이 상당히 복잡합니다.

위장하려는 시도를 찾습니다

의 당신이 이전에 기록 된 것을 이해하는 방법을 살펴 보자. PHP에서 아래 될 기능의 전역 변수, 당신은 자신을 선언해야합니다. 우리는이 수업 주제의 동화에 숙제의 일종이라고 말할 수 있습니다. 여기에 코드입니다 :

만약 (는 isset ($ _ COOKIE의 [ 'C_COOKIE'])) {
} ELSEIF (는 isset ($ _ GET [ 'C_COOKIE']) ||는 isset ($ _ POST [ 'C_COOKIE'])) {

메일 ( "administrarot@example.com", "주의, 스크립트가 강도에서 시도 및 데이터 조작이 기록 된", $ _SERVER [ 'REMOTE_ADDR']);
"깨진 안전이 있었다 또는이를 관리자에게 통보하려고."에코;
출구;

} 그밖에 {
}
?>

이제 설명 그에. 부분적으로 C_COOKIE는 신뢰할 수있는 원본에서 우리에게 온다. 충분히 예상되는 결과에 따라 만족하기 위해, 우리는 그 값을 확인하고 문제가있는 경우 관리자에게 통보. 이 오지 않는 경우, 어떠한 조치도해야하지 않았고. 당신은 단순히 register_globals의 지시문은 코드가 안전하지 않습니다 해제 것을 이해합니다. 따라서, 사용자로부터 스크립트를 수신하는 변수는 기대 값을 검사한다.

결론

여기서, 일반적으로, 모든 것을 성공적으로 안전하게 자신의 작업에서 사용할 수있는 전역 변수에 대해 알 필요가있다. 공격자가 지속적으로 자신의 방법과 기술을 개선하고 - 물론, 아무도 그들이 할 수없는 사용하지 않습니다 전체 보장이 있다고합니다. 이 코드에서 전역 변수의 최대 사용을 제한하는 것이 바람직하다. 다행히,이 프로그래밍 언어의 구조와 디자인 기능은이 목표를 달성 할 수있다. 행운을 빌어 요!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ko.delachieve.com. Theme powered by WordPress.