2012-09-07 4 views
1

그래서 웹 사이트가 있습니다. http://example.com 그리고 로그인하려는 웹 사이트가 있습니다. http://target.com 내 사이트의 http://target.com에서 로그인 양식 (사용자 이름 및 비밀번호)을 채울 수있는 스크립트를 원합니다.PHP가 포함 된 다른 웹 페이지의 웹 사이트에 로그인

그래서 http://example.com/login.php&username=John&password=12345

에 사용자가 클릭 그는 직접 http://target.com 로그인하고 시작 페이지로 전송해야 할 때.

이 코드가 있습니다.

$url = "http://target.com"; 
$post = "username=John&password=12345&login=++Ba%F0lan++"; 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
echo curl_exec($ch); 
curl_close($ch); 

하지만 환영 페이지로 전달하지 않습니다. 대신 http://example.com (페이지를 찾을 수 없음)에 오류를 표시합니다.

또한 URL에서 사용자 이름과 암호 데이터를 가져 오지 않습니다. 그러나 나는 나 자신으로 그것을 나중에 해결할 것이다라고 생각한다.

어떤 도움이 필요합니까?

+0

나를 위해 그것은 피싱 스크립트처럼 보입니다. – Peter

답변

2

OK ... target.com이 일종의 login-by-proxy를 명시 적으로 지원하지 않는다면 이는 근본적으로 생각보다 어렵습니다. 불가능하지는 않더라도 말입니다. target.com에서

client ----> example.com ----> target.com 

일반적으로 클라이언트가 로그인 및 는 자신의 로그인 토큰 세션 쿠키를 수신 : 현재 세 개의 정당이있다. target.com에 대해서만 target.com 쿠키를 설정할 수 있습니다.

이 프로세스를 프록시하고 의 로그인을 target.com으로하면 example.com은 쿠키를받습니다. 이제는 example.com이 인증되었습니다. 그러나 example.comtarget.com 대신에 쿠키를 설정할 수 없으므로이 인증을 클라이언트에 전달할 수 없습니다. example.com은 수신 된 쿠키를 클라이언트에 전달할 수 있지만 해당 쿠키는 example.com에 대해서만 유효합니다.

target.com은 쿠키에 의존하지 않는 URL 기반 로그인 체계를 지원하지 않으면 근본적으로 엉망입니다.

+1

@Peter (누구의 코멘트를 사용했는지) 물론, 'example.com'은 미리 채워진 값으로 로그인 양식을 준비하고 클라이언트가 Javascript를 통해 자동으로 제출하도록 할 수 있습니다. 그렇게 할 수는 있지만'target.com'이 합리적인 CSRF 보호 기능을 사용하면 실패 할 수도 있습니다. – deceze

관련 문제