2009-06-05 4 views
2

실제로, 너무 엉망이어서 내가 컬이 범인인지 확실하지 않습니다.POST 대신 GET을 보내려면

$creds = array(
    'pw' => "xxxx", 
    'login' => "user" 
    ); 

$login_url = "https://www.example.net/login-form"; //action value in real form. 
$loginpage = curl_init(); 

curl_setopt($loginpage, CURLOPT_HEADER, 1); 
curl_setopt($loginpage, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($loginpage, CURLOPT_URL, $login_url); 
curl_setopt($loginpage, CURLOPT_POST, 1); 
curl_setopt($loginpage, CURLOPT_POSTFIELDS, $creds); 

$response = curl_exec($loginpage); 
echo $response; 

내가 (일반, 성공적인 요청의 헤더를 일치) 헤더를 얻을 로그인 페이지 다음 (나는 컬 리디렉션이 때문에 캡처 같은데요)이 : 그래서, 여기에 PHP의 "Bad contact type"의 효과에 대한 오류.

요청이 호스트가 요청한 서버가 아닌 원격 서버로 설정되었지만 Firebug에서 요청이 POST가 아닌 GET으로 전송되었다는 것이 문제라고 생각했습니다.

로그인 사이트의 양식을 복사하는 경우 값이있는 양식 요소 만 잘라내어 전체 URL을 입력하면 효과가 있습니다. 그래서 나는 이것이 로그인 요청이 동일한 서버 등에서 발생해야하는 보안 문제가 아니라고 생각할 것입니다. (심지어 비어있는 숨겨진 값을 없애고 다른 쿠키를 설정하는 JS 전체를 제거합니다).

다시 말해서, 나는 꽤 빨리 혼란스러워합니다.

왜 GET으로 나타나는지, 왜 작동하지 않는지에 대한 아이디어가 있습니까?

답변

1

전체 클래스의 PHP-cURL 관련 문제를 해결할 때는 CURLOPT_VERBOSE를 켜고 CURLOPT_STDERR에 파일 핸들을 제공하기 만하면됩니다.

tail -f 파일의 헤더와 응답을 방화 광에서 볼 수있는 것과 비교하면 문제가 명확 해집니다.

+0

정말 좋은 조언. – RageZ

1

요청은 서버에서 이루어 지므로 방화 광에서 나타나지 않습니다. 브라우저에서 다른 요청과 혼동했을 수도 있습니다. 실제로 일어나는 일을 찾으려면 wireshark을 사용하십시오. 설정하지 않았습니다 CURLOPT_FOLLOWLOCATION; 리디렉션을 따라서는 안됩니다.

요약 : 추측 적게, 더 게시하십시오. pcap 덤프에 연결하면 잘못된 작업을 정확하게 알려줄 수 있습니다. 또는 PHP 스크립트의 정확한 출력을 올리면됩니다.

+0

머리를 주셔서 감사합니다. 다른 서버에 거의 동일한 curl_exec을 수행했을 때 POST (설정 한 양식 값 포함)를 보았으므로 방화 상자 (Net 탭에 있음)가 정확하다고 생각했습니다. 확실하게 로컬 컴퓨터에서 wireshark를 사용합니까? 요청이 서버 측에서 발생했기 때문에 아니오라고 추측합니다. 서버용으로 어떻게 구성합니까? – Anthony

+0

@Anthony wireshark는 PHP가 실행중인 머신에서 실행되어야합니다. 또는 요청을 보내는 머신에서 실행되어야합니다. wireshark가 설치되어 있지 않으면 tcpdump를 찾으십시오. 저는 컬 관련 자료에 관심이 많기 때문에이 상자에 맞지 않는 추가 질문이 있으면 주저하지 말고 메신저 나 이메일을 통해 저에게 연락하십시오 (주소는 내 프로필 참조). – phihag

1

표시된 코드는 대상 서버가 예상하지 않는 다중 포트 양식 (해시 배열을 POSTFIELDS 옵션에 전달하기 때문에)을 수행합니다.

0

끝에 print_r(curl_getinfo($loginpage))을 던집니다. 다시 보낸 헤더 데이터를 확인하십시오.

또한 자신의 사이트에서 로그인하는 것을 위조하려고 시도하는 경우 귀하가 게시물을 올린 정확한 참조자를 보내고 싶을 때, 귀하가 게시물을 보내면 웹 사이트에 있다고 생각할 수 있습니다. .

관련 문제