2015-01-28 1 views
0

나는 액세스 권한이없는 팀에서 관리하는 사용자 정의 세션 코드로 웹 사이트 (단일 페이지 응용 프로그램)를 관리합니다. 응용 프로그램은 appweb을 사용하여 사용자 정의 빌드되며 다른 공개적으로 호스팅 된 웹 사이트와 다릅니다. 이 앱은 http와 https에서 모두 제공됩니다. 사용자가 https에 로그인하면 http로 로그인 한 후 다음 코드에도 불구하고 보안 속성이 설정되지 않습니다.http 및 https에 대해 다른 도메인 이름을 사용하는 PHP 세션 쿠키

$https = $_SERVER['SERVER_PROTOCOL'] == 'https' ? 1 : 0; 
ini_set("session.cookie_secure", $https); 
//or 
session_set_cookie_params(0, '/', null, $https, 1); 

위의 코드와 같이 세션 쿠키를 덮어 썼습니다. 그것은 효과가 있었다.

$sessname = session_name(); 
setcookie($sessname, $_COOKIE[$sessname], 0, '/', null, $https, 1); 

두 가지 탭에서 http와 https를 모두 열면 두 세션 중 하나에서 사용자 정의 코드의 잘못된 원인이 발생합니다. 부정적인 시나리오이지만 위와 같은 경우 사용자에게 혼동을 줄 수 있습니다.

나는 이것을 우회하는 다른 옵션이 있으며 나는 리디렉션과 같은 것을 사용하고 있었다는 것을 알고 있습니다. 그러나 나는 대체물이 잘 유지되는지 확인하고 싶었다.

지금 내가 대체품으로 생각해 왔던 것은 다음과 같습니다.

여기서는 동일한 세션 ID에 대해 http와 https에 다른 도메인 이름을 설정했습니다. http로 로그인하면 php 세션 아이디는 http.10.10.10.1과 같은 도메인을 가지며 https에 로그인하면 php 세션 아이디는 도메인이 https.10.10.10.1로 설정됩니다. 그것은 효과가있다.

올바른 방법인가요? 부작용이 있습니까?

답변

0

모든 HTTP 요청을 https로 리디렉션하지 않는 이유는 무엇입니까? PHP 또는 htaccess로 사용 : 그렇지 않으면

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L] 

, 내가 생각하는 당신은 그와 유사한 문제를보고 할 수 있습니다 :
Session lost when switching from HTTP to HTTPS in PHP
Switching between HTTP and HTTPS pages with secure session-cookie
Cookie across HTTP and HTTPS in PHP

+0

을 그게 내가이 질문을하지 않았을 수 있다면 처음에는. 잊어 버려. 미안하지만 나는 그 질문에 언급하지 않았다. 너무 슬퍼. 지금 거기에있다. –

+0

비슷한 질문을 보셨습니까? 그것은 어떤 식 으로든 도움이됩니까? – Kev

+0

당신은 내 질문에 답하지 못했습니다. 세 번째 것은 여기에 적용되지 않습니다. 코드베이스가 다르므로 처음 두 코드를 적용 할 수 없습니다. 대체 어때요? –