Práticas recomendadas para manter uma parte do website sob https e sob http para o restante

1

Eu tenho certa parte do meu site por trás do SSL, que é reservado para usuários registrados & quer resto do site que está aberto ao público para ser servido por apenas http. Atualmente, ele é configurado para que todas as páginas sejam públicas ou sejam atendidas por https. Também tanto ele público e amp; conteúdo não público reside sob o mesmo webroot.

Vocês podem me sugerir uma maneira de resolver isso ou talvez um guia de boas práticas? Obrigado!

EDITAR

Nós usamos LAMP stack.

    
por Chantz 30.11.2010 / 23:18

6 respostas

1

Este pseudo-conf para o Apache fará o que você precisa: dois hosts virtuais, um com SSL, e redireciona do (s) caminho (s) requerido pelo SSL para a versão HTTPS do site.

<VirtualHost *:80>
ServerName www.sample.com
DocumentRoot /var/www/www.sample.com

Redirect permanent /secure https://www.sample.com/secure
Redirect permanent /secure2 https://www.sample.com/secure2
</VirtualHost>

<VirtualHost *:443>
Servername www.sample.com
DocumentRoot /var/www/www.sample.com

SSLEngine On
</VirtualHost>

Depois de fornecer aos seus usuários um cookie que identifique sua identidade, é melhor mantê-los na versão SSL do site, para que o cookie deles não seja invadido por usuários mal-intencionados na conexão sem fio coffeeshop não criptografada. exemplo. Você tem algumas opções para fazer isso funcionar. Use sua linguagem de aplicativo (por exemplo, PHP) para detectar o cookie e, em seguida, redirecione para a versão SSL da página atual, ou use o mod_rewrite para forçar o SSL quando o cookie existir. Mas essa é outra questão ...

    
por 09.02.2011 / 17:50
2

Primeiro, saiba que a veiculação de conteúdo misto pode acionar avisos do navegador que informam ao usuário que nem tudo o que estão vendo é "conteúdo seguro".

Em segundo lugar, a menos que você esteja com problemas de desempenho ou latência, provavelmente não vale a pena dividir seu conteúdo seguro e não seguro. A carga marginal do servidor criada pelo SSL é bastante pequena hoje em dia, em comparação com 10 a 12 anos atrás, e a maior parte do impacto é causada pela negociação inicial da conexão, o que acontecerá independentemente de qualquer parte do site exigir SSL .

Dito isto, se você precisar do aumento de desempenho e estiver satisfeito com a possível confusão / incômodo do usuário, recomendamos que você configure um host nomeado separadamente (por exemplo, se o site seguro for www.sample.com, registre-se, por exemplo, static.sample.com como um CNAME / alias para esse registro DNS (ou como um IP separado se você estiver se sentindo extravagante), configurando um novo VirtualHost no Apache para esse nome sem SSL ativado e, em seguida, usar esse local para armazene seu conteúdo estático.

Se você precisar de separação diretório-por-diretório de conteúdo SSL e não-SSL, o melhor caminho a seguir é configurar um segundo VirtualHost no Apache, escutando a porta 80 e apontando para o mesmo local onde o seu SSL VirtualHost está apontado. e, em seguida, adicione redirecionamentos para os URIs que você precisa para ser criptografado. Por exemplo:

<VirtualHost *:80>
    ServerName www.sample.com
    DocumentRoot /var/www/www.sample.com

    Redirect permanent /secure https://www.sample.com/secure
</VirtualHost>

<VirtualHost *:443>
    Servername www.sample.com
    DocumentRoot /var/www/www.sample.com

    SSLEngine On
</VirtualHost>

(Eu obviamente deixei um monte de coisas fora, não tente copiar e colar.)

    
por 09.02.2011 / 17:41
1

A prática recomendada é não misturar tráfego http e https. Conteúdo misto pode representar uma vulnerabilidade de segurança. Um invasor pode ajustar o tráfego não SSL de maneira a acessar a parte SSL.

O Javascript em particular é perigoso. Mas eles poderiam mudar uma imagem que muda as instruções mostradas na página. Também houve vulnerabilidades de imagem e CSS em navegadores no passado.

Outra discussão é aqui .

Se você realmente quiser, é bem fácil. Tem dois vhosts do apache, um SSL e um não; mas por outro lado o mesmo. Em seguida, no seu código php, referencie seus URLs adequadamente.

Eu isso para muitos dos meus sites. Por exemplo, o site não é SSL até o seu login, então é totalmente SSL de lá.

    
por 09.02.2011 / 17:36
0

A melhor prática é forçar as páginas protegidas a serem acessadas somente por meio de páginas HTTPS e não HTTP para não serem acessadas via HTTPS. Usando uma linguagem como o PHP, você pode detectar isso e redirecionar o usuário para o protocolo apropriado. Você também pode configurá-lo via mod_rewrite, se necessário.

Um problema que você pode notar é que, se você veicular uma página via HTTP e um ataque MITM estiver em jogo, o invasor poderá manipular o HTML e alterar formulários e links para ir para HTTP para que o invasor ainda possa monitorar. Portanto, mesmo que você force uma página a ser acessada somente via HTTPS, o atacante ainda procura dados confidenciais.

Uma solução atualmente proposta para isso é HTTP Strict Transport Security , que já está sendo usada em alguns sites. Isso traz o forçamento de HTTPS para o navegador, assim, mesmo que uma ação de formulário tenha sido desmembrada por meio de um MITM, o navegador não a enviará por HTTP.

    
por 30.11.2010 / 23:41
0

Se você misturar https e o conteúdo http, o cliente receberá o erro "Aviso de conteúdo não autenticado".

    
por 09.02.2011 / 17:37
0

Na verdade, o Apache dificulta a mistura de conteúdo como este - os sites SSL e não SSL devem ser definidos em vhosts separados - você só precisa garantir que as árvores de diretório não se sobreponham.

    
por 09.02.2011 / 17:39

Tags