torna o arquivo legível por outros usuários

1

Eu estava tentando fazer uma sessão para todos os meus subdomínios (uma sessão entre subdomínios)

subdomínio número um

auth.site.com/session_test.php


session_set_cookie_params(0, '/', '.site.com');
session_start();
echo session_id().'<br />';
$_SESSION['stop']='stopsss this';
print_r($_SESSION);

subdomínio número dois

anscript.site.com/session_test.php

session_set_cookie_params(0, '/', '.site.com');
session_start();
echo session_id().'<br />';
print_r($_SESSION);

Agora, quando visito auth.site.com/session_test.php

eu recebo esse resultado

06pqdthgi49oq7jnlvuvsr95q1
Array ( [stop] => stopsss this ) 

E quando eu visito anscript.site.com/session_test.php

eu recebo esse resultado

06pqdthgi49oq7jnlvuvsr95q1
Array () 

id da sessão é o mesmo!

mas a sessão está vazia

depois de dois dias de falha na trys, finalmente eu detectei o problema

o problema está nas promessas de arquivos

o arquivo não é legível pelo outro usuário

arquivo de sessão no meu servidor

-rw-------  1 auth auth 25 Jul 11 11:07 sess_06pqdthgi49oq7jnlvuvsr95q1

quando eu faço este comando no servidor

chmod 777 sess_06pqdthgi49oq7jnlvuvsr95q1

eu recebo o problema resolvido !! o arquivo é legível por (anscript.site.com)

Então, como corrigir esse problema? Como definir as promessas padrão nos arquivos de sessão?

estas são as promessas do diretório de sessões

Access: (0777/drwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
    
por Alaa Gamal 11.07.2012 / 20:04

3 respostas

1

Seus arquivos de sessão do PHP devem ser legíveis pelo PHP / servidor web, não necessariamente por todos os usuários (isso é um risco de segurança).

Para corrigir esse problema, verifique como o seu PHP (ou apache com mod_php) está sendo executado e defina a propriedade do arquivo para esse usuário para todos os arquivos da sessão (e o diretório que os contém, geralmente / var / lib / php / session ou algo similar).

chown -R user.group /var/lib/php/session
    
por 11.07.2012 / 20:12
1

Eu vejo dois problemas com sua solução.

Definir as permissões para 777 torna-as executáveis e legíveis. Se você quiser tornar o arquivo legível por outras, tente 644 em vez de 777. O umask usado quando o servidor é iniciado é um dos fatores que controlam isso. Se você iniciar o servidor com um umask de 077, obterá o comportamento que está vendo. O código que armazena a sessão pode fazer o mesmo.

Dependendo de como você configurou seu servidor da web, servidores da web diferentes podem ser executados como usuários diferentes. Parece que o site seguro pode estar sendo executado como auth: auth em vez do id em que os outros servidores estão sendo executados. Tente criar a sessão como usuários diferentes. Se você obtiver a mesma propriedade para todos os usuários, pareceria que está usando um programa em execução com setuid privileges para criar a sessão e não usar consistentemente esse programa para ler os dados da sua sessão.

O site de autenticação requer HTTPS enquanto você acessa o outro site com HTTP? Em caso afirmativo, as configurações de segurança da sessão podem impedir o acesso.

    
por 12.07.2012 / 01:39
0

Considere as ACLs. homem chacl . VAR = $ (md5sum filename | cut -c1-20); attr -s "File.checksum.md5" -V "$ VAR" nome do arquivo

    
por 15.12.2012 / 18:41

Tags