2013-02-15 1 views
0

보안 방화벽과 함께 Silex를 사용하는 앱이 있습니다. https://app.com/web에 내 앱을로드 할 때 이미 인증되지 않았습니다. https://app.com:80/web/user/login_checkSilex가 위치 80에 포트 80을 리디렉션합니다.

비 SSL 포트에서 SSL 연결을 시도 할 때 SSL 오류가 발생합니다.

내 방화벽 설정이

$app['security.firewalls'] = array(
'login' => array(
    'pattern' => '^/user/login$', 
), 
'admin' => array(
    'pattern' => '^.*$', 
    'form' => array('login_path' => '/user/login', 'check_path' => '/user/login_check'), 
    'logout' => array('logout_path' => '/user/logout'), 
    'users' => array(
     // raw password is demo 
     'test' => array('ROLE_ADMIN', 'qldD7MO0Ol7e2LijC1qdNxQJpkIdHQLPjHUM0rN/N6AjEHqGzZFsYPh94R/AeFrM8aEt9Y6L$ 
    ), 
), 
); 

나는 나는 그것의 나의 웹 서버 있도록 추가되는 포트없이 https://app.com/web/index.php에 액세스 할 수 있습니다 알고, 다음과 같습니다, 그것의 나는/사용자/로그인 페이지로 리디렉션합니다.

나는 심포니 내게 도움이되지 않습니다

$_SERVER['HTTPS'] = 'on'; 
$_SERVER['SERVER_PORT'] = 443; 

을 설정하면 URL하지만 _SERVER의 SERVER_PORT에 정의 된 하나의 포트를 사용하지 않습니다 읽어 보시기 바랍니다. 그 헤더에 반환이 리디렉션

초기 요청,

요청 URL : https://app.com/web/ 요청 방법 : 상태 코드를 얻을 : (302) 찾을 수

위치 : https://app.com:80/web/user/login

아무도 방법을 알고 있나요 위치에 포트 80을 추가하는 silex의 리디렉션을 중지 하시겠습니까?

편집 : 이것은 Redhat의 OpenShift 클라우드 인프라에서 실행 중임을 언급해야합니다.

이론적으로
+0

않습'요청 :: setTrustedProxies (배열 ($ 요청 -> 서버 -> GET ('REMOTE_ADDR'))) : 나는 오토로더 전에 부트 스트랩 파일의 상단에이를 넣어 당신? –

+0

@Jack이 설정처럼 보이지 않습니다. Request :: setTrustedProxies (array ($ _ SERVER [ 'REMOTE_ADDR']))); – shapeshifter

답변

3

입니다 IP를 수백이있는,하지만, 여기 CloudFlare를 사용할 때이 문제를 했어

http://symfony.com/blog/security-release-symfony-2-0-19-and-2-1-4를 설명한대로 요청에 "신뢰할 수있는 프록시"를 설정하여이 문제를 해결 할 수 있어야한다 그들을 모두 "신뢰할 수있는"사람으로 표시하는 것은 비현실적이므로 문제를 해결할 수있는 가장 간단한 방법입니다. 대한`작업,

// Fix IP for cloudflare 
if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) { 
    $_SERVER['HTTP_X_FORWARDED_FOR'] = $_SERVER['HTTP_CF_CONNECTING_IP']; 
    $_SERVER['HTTP_CLIENT_IP'] = $_SERVER['HTTP_CF_CONNECTING_IP']; 
    $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP']; 
} 

// Fix SSL for cloudflare 
if (isset($_SERVER['HTTP_CF_VISITOR'])) { 
    if (preg_match('/https/i', $_SERVER['HTTP_CF_VISITOR'])) { 
     $_SERVER['HTTPS'] = 'On'; 
     $_SERVER['HTTP_X_FORWARDED_PORT'] = 443; 
     $_SERVER['SERVER_PORT'] = 443; 
    } 
} 
+0

안녕하세요, MDrollette, 정보 주셔서 감사합니다. 내 문제가 비슷한 것 같아. Redhat의 OpenShift PaaS에 배포하는 방법을 언급해야합니다. – shapeshifter

+0

젠장, 나도 그랬어! HTTP_X_FORWARDED_PORT 설정도 추가했지만 배포 된 버전이 아니라 로컬 복사본을 편집하고 있습니다. 그래서 아마추어! – shapeshifter

+0

저는이 목적으로 Codeigniter에서 매우 유사한 해킹을 사용했습니다. –

관련 문제