$_SERVER['REMOTE_ADDR'] 변수를 가장하는 방법은?
합니까의 이 가능합니까?$_SERVER['REMOTE_ADDR']
가변적?
다음과 같이 요청을 위장하고 싶습니다.
$_SERVER['REMOTE_ADDR']='127.0.0.1';
PHP로 어떻게 할 수 있습니까?CURL이 어떻게든 할 수 있나요?
원격으로 가짜를 만들겠다는 말씀이시죠?단답형은 '네'입니다.그것이 얼마나 쉬운지에 대한 긴 대답은 당신이 그것을 어떻게 가장하느냐에 달려 있습니다.
응답을 받는 것에 개의치 않는다면, 대상에 대한 원시 소켓을 열고 소스 IP 주소를 위조하는 것만큼 사소한 일입니다.모든 PHP의 소켓 구현이 TCP 수준 이상이기 때문에 PHP에서 정말 쉽게 할 수 있는지 잘 모르겠습니다.하지만 저는 가능하다고 확신합니다.이제 네트워크를 제어하지 못하기 때문에 응답은 다시 사용자에게 돌아가지 않습니다.따라서 (syn-ack은 양방향 통신을 필요로 함으로써 이를 방지하기 때문에) 사소하게 위조된 TCP 헤더를 통해 TCP 연결을 만들 수 없음을 의미합니다.
그러나 IP가 꺼져 있는 게이트웨이를 손상시킬 수 있다면 원하는 대로 할 수 있습니다.따라서 컴퓨터가 연결된 와이파이 라우터를 손상시키면 그 컴퓨터인 척 할 수 있고 서버는 그 차이를 알려주지 않습니다.ISP의 아웃바운드 라우터를 손상시키면 적어도 이론적으로는 컴퓨터인 척 할 수 있고 서버는 차이를 알 수 없습니다.
자세한 내용은 다음 링크를 참조하십시오.
, 할 수 .127.0.0.1
로컬 시스템/서버를 실제로 손상하는 경우 TCP 아래의 루프백 주소.그리고 그 시점에서 그게 정말 중요한가요?
중요한
이 정보에 접근하기 위해 프레임워크를 사용하는 경우, 해당 프레임워크가 해당 정보를 확인하지 않도록 확실히 해야 합니다.X-HTTP-FORWARDED-FOR
헤딩!그렇지 않으면 IP 주소를 위장하는 것은 사소한 일입니다.예를 들어 Zend Framework의 방법을 사용하는 경우에는 반드시 통과해야 합니다.false
매개변수로! 않으면 . 그렇지 않으면 누군가가 HTTP 헤더를 보내기만 하면 됩니다입니다.X-Http-Forwarded-For: 127.0.0.1
그리고 그들은 이제 현지인으로 보입니다!백엔드에서 프레임워크가 어떻게 작동하는지 이해하지 못한 상태에서 프레임워크를 사용하는 것이 실제로 나쁠 수 있는 경우 중 하나입니다.
편집: 관련
저는 최근에 StackOverflow의 애플리케이션에서 어떻게 취약점을 발견했는지에 대한 블로그 게시물을 작성했습니다.여기서는 이 질문이 무엇을 찾고 있는지와 매우 유사한 메커니즘을 활용하기 때문에 매우 관련성이 높습니다(주변 상황이 다소 좁지만).
원격 주소는 예의상 추가된 것이 아니라 IP 프로토콜에서 패키지를 라우팅하는 데 사용되므로 가짜 주소가 포함된 패키지를 전송하면 응답을 받을 수 없으며 TCP 연결을 통해 전달되는 HTTP 요청을 말하는 것이므로 다음을 설정하는 데 여러 IP 패킷(및 일치하는 응답)이 필요합니다.
아니요, 불가능합니다. (물론 루프백 인터페이스를 통해 동일한 호스트에서 요청을 전송하는 경우는 제외합니다.)
은 $_SERVER['REMOTE_ADDR']
브라우저와 통신하기 위해 사용하는 TCP 소켓에서.세 방향의 악수 때문에 개방형 인터넷에서 이 변수에 영향을 주는 것은 불가능합니다.클라이언트와 서버가 와이파이와 같은 브로드캐스트 네트워크에 있으면 와이어를 냄새로 맡고 악수를 완료할 수 있습니다.
을 $_SERVER['REMOTE_ADDR']
를 최종 사용자의 IP 주소가 아닌 프록시의 IP 주소로 설정할 수 있습니다.
이 경우 대신 사용할 수 있는 다른 헤더가 있습니다.이 페이지는 모든 가능성을 확인하고 최종 사용자의 주소를 제공하는 기능을 제공합니다.
http://roshanbh.com.np/2007/12/getting-real-ip-address-in-php.html
또는를 프록시로 사용하는 , 수 .REMOTE_ADDR
(프록시까지만 당신을 이끌 수 있을 것입니다)
HTTPS를 REMOTE_ADDR
가 될 의 IP입니다, HTTPS다를 수 .따라서 그의 주소를 확실하게 확인하는 한 가지 방법은 HTTPS에서 당신의 사이트를 열도록 하는 것입니다.
의 수 .$_SERVER
서버에 있는 배열을 포함합니다. 물론 다른 사용자의 배열이 아닙니다.
그러나 컴퓨터의 IP 주소는 변경되지 않습니다.
REMOTE_ADDR
사용자가 현재 페이지를 보고 있는 IP 주소입니다.
프록시 등을 이용하여 스크립트를 요청하여 IP주소를 변경할 수 있으나 원하는 텍스트를 설정할 수 없습니다.
그것은 apache나 사용 중인 서버에 의해 설정되는 변수입니다.당신은 그것을 자랑할 수 없습니다.달려도 좋습니다$_SERVER['REMOTE_ADDR']='127.0.0.1';
대본 초반부에 말이죠 하지만 그게 당신이 하려는 일인지는 의문입니다
언급URL : https://stackoverflow.com/questions/5092563/how-to-fake-serverremote-addr-variable
'code' 카테고리의 다른 글
검색되지 않은 PDO 예외: PDO::__construct(): php_network_getaddresses: getaddrinfo 실패:이름 또는 서비스를 알 수 없습니다. (0) | 2023.10.05 |
---|---|
PL/SQL 개발자:여러 진술? (0) | 2023.10.05 |
Wordpress + Vue.js : 연락처 양식 (0) | 2023.10.05 |
Wordpress post__not_in() 기능이 위젯 배열의 현재 게시물을 제외하지 않습니다. (0) | 2023.10.05 |
C의 이 이상한 함수 정의 구문은 무엇입니까? (0) | 2023.10.05 |