2013-07-18 6 views
1

나는 cPanel에 자동으로 로그인 한 다음 사용자를 Awstats 페이지로 리디렉션하려고합니다. 하지만 몇 가지 문제가 있습니다. 사용자가 암호는 일반 텍스트로 명시 될 것입니다, 소스 코드를 볼 경우에 당신이 볼 수 있듯이,외부 cPanel 로그인 및 리디렉션

<form method="post" id="login-form" action="http://domain.com:2082/login"> 
    <input type="hidden" name="login_theme" id="login_theme" value="cpanel"> 
    <input type="hidden" name="goto_uri" id="goto_uri" value="awstats.pl?config=euqueroinvestir.com&lang=pt"> 
    <input type="hidden" name="user" id="user" value="myuser"> 
    <input type="hidden" name="pass" id="pass" value="mypass"> 
</form> 
<script>window.onload = function() { document.forms["login-form"].submit(); }</script> 

그러나 : 내가 발견 유일한 작업 방법이있다. 나는 그것을 할 수 없다. 그래서 나는 cUrl로 시도했지만, 이제는 헤더, 쿠키 등에 문제가 있습니다.

이 내 마지막 시도 :이

$url = "http://domain.com:2082/login"; 

$curl = curl_init(); 

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,0); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_VERBOSE, 1); 
curl_setopt($curl, CURLOPT_HEADER, 1); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($curl, CURLOPT_URL, $url); 
curl_setopt($curl, CURLOPT_POSTFIELDS, "user=myuser&pass=mypass"); 
$result = curl_exec($curl); 
$header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE); 
$header = substr($result, 0, $header_size); 
$body = substr($result, $header_size); 
curl_close($curl); 

$header = str_replace("\r", '', $header); 
$header = explode("\n", $header); 

foreach ($header as $h) { 
    header ($h); 
} 
$parts = explode('URL=', $result); 
$session_parts = explode('/frontend/', $parts[1]); 
$token = $session_parts[0]; 

header('Location: http://domain.com:2082'.$token.'/awstats.pl?config=domain.com&ssl=&lang=pt'); 

내가 할 수있는 루프가 나를 컬 클라이언트에서 헤더와 쿠키를 설정하려고입니다 ($의 H와 같은 $ 헤더) 보안 토큰과의 foreach를 얻을 수 사용자 브라우저.

모든 도움을 주실 수 있습니다. 그리고 예, 저는 구글을 많이 검색했습니다.

답변

1

나는 이것이 오래된 질문이지만, 아무도 응답하지 않았기 때문에 나는 대답을 버릴 것이라고 생각했다. 어쩌면 다른 사람도 이걸 시도하는 데 도움이 될 것입니다.

cPanel이 사용자의 IP 주소를 확인했기 때문에이 기능을 사용할 수없는 이유가 있습니다. cURL 스크립트는 IP가있는 서버에 있으며 로그인하려는 사용자는 고유 한 IP 주소를 사용합니다.

cPanel (x3) 로그인 양식을 확인해보십시오. IP 주소를 제출할 양식 필드도 없기 때문에 스푸핑을 방지하기 위해 서버 측에서만 검색됩니다.

<form id="login_form" action="/login/" method="post" target="_top"> 
    <div class="input-req-login"><label for="user">Username</label></div> 
    <div class="input-field-login icon username-container"> 
     <input name="user" id="user" autofocus="autofocus" value="" placeholder="Enter your username." class="std_textbox" type="text" tabindex="1" required> 
    </div> 
    <div style="margin-top:30px;" class="input-req-login"><label for="pass">Password</label></div> 
    <div class="input-field-login icon password-container"> 
     <input name="pass" id="pass" placeholder="Enter your account password." class="std_textbox" type="password" tabindex="2" required> 
    </div> 
    <div class="controls"> 
     <div class="login-btn"> 
      <button name="login" type="submit" id="login_submit" tabindex="3">Log in</button> 
     </div> 

            </div> 
    <div class="clear" id="push"></div> 
</form> 
관련 문제