Configurando o HTTP
Visão geral das opções de configuração para o Nette HTTP.
Se você não estiver usando toda a estrutura, mas apenas esta biblioteca, leia como carregar a configuração.
Cabeçalhos HTTP
http:
# cabeçalhos que são enviados com cada pedido
headers:
X-Powered-By: MyCMS
X-Content-Type-Options: nosniff
X-XSS-Protection: '1; mode=block'
# afeta o cabeçalho X-Frame-Options
frames: ... # (string|bool) padrão de 'SAMEORIGIN'
Por razões de segurança, a estrutura envia um cabeçalho X-Frame-Options: SAMEORIGIN
, que diz que uma página
pode ser exibida dentro de outra página (no elemento <iframe>
) somente se estiver no mesmo domínio. Isto pode
ser indesejado em certas situações (por exemplo, se você estiver desenvolvendo um aplicativo do Facebook), portanto,
o comportamento pode ser alterado através da definição de quadros frames: http://allowed-host.com
.
Política de Segurança de Conteúdo
Os cabeçalhos Content-Security-Policy
(doravante denominados CSP) podem ser facilmente montados, sua descrição
pode ser encontrada na descrição do CSP. As diretrizes CSP (tais como
script-src
) podem ser escritas como cordas de acordo com a especificação ou como matrizes de valores para melhor
legibilidade. Então não há necessidade de escrever aspas em torno de palavras-chave, como 'self'
. A Nette também
gerará automaticamente um valor de nonce
, portanto 'nonce-y4PopTLM=='
será enviado no cabeçalho.
http:
# Política de Segurança de Conteúdo
csp:
# string de acordo com a especificação CSP
default-src: "'self' https://example.com"
# matriz de valores
script-src:
- nonce
- strict-dynamic
- self
- https://example.com
# bool no caso de interruptores
upgrade-insecure-requests: true
block-all-mixed-content: false
Use <script n:nonce>...</script>
nos gabaritos e o valor nonce será preenchido automaticamente.
Fazer sites seguros em Nette é realmente fácil.
Da mesma forma, os cabeçalhos Content-Security-Policy-Report-Only
(que podem ser usados em paralelo com o CSP) e
a Política de Recursos podem ser
acrescentados:
http:
# Relatório de Política de Segurança de Conteúdo - Somente
cspReportOnly:
default-src: self
report-uri: 'https://my-report-uri-endpoint'
# Feature Policy
featurePolicy:
unsized-media: none
geolocation:
- self
- https://example.com
Cookie HTTP
Você pode alterar os valores padrão de alguns parâmetros do Nette\HttpResposta::setCookie() e métodos de sessão.
http:
# escopo do cookie por caminho
cookiePath: ... # (cordão) padrão de '/'
# que hospeda é permitido receber o cookie
cookieDomain: 'example.com' # (string|domain) default to unset
# para enviar cookies somente via HTTPS?
cookieSecure: ... # (bool|auto) padrão para auto
# desativa o envio do cookie que a Nette utiliza como proteção contra o CSRF
disableNetteCookie: ... # (bool) falha em false
A opção cookieDomain
determina quais domínios (origens) podem aceitar cookies. Se não especificado, o cookie
é aceito pelo mesmo (sub)domínio que é definido por ele, excluindo seus subdomínios. Se cookieDomain
for
especificado, então os subdomínios também serão incluídos. Portanto, a especificação do cookieDomain
é menos
restritiva do que a omissão.
Por exemplo, se cookieDomain: nette.org
estiver definido, o cookie também está disponível em todos os
subdomínios como doc.nette.org
. Isto também pode ser conseguido com o valor especial domain
, ou seja,
cookieDomain: domain
.
O valor padrão de cookieSecure
é auto
o que significa que se o site estiver rodando em HTTPS, os
cookies serão enviados com a bandeira Secure
e, portanto, só estarão disponíveis via HTTPS.
Proxy HTTP
Se o site estiver rodando atrás de um proxy HTTP, digite o endereço IP do proxy para que a detecção de conexões HTTPS
funcione corretamente, assim como o endereço IP do cliente. Ou seja, para que Nette\Http\Request::getRemoteAddress() e isSecured() retornem os valores corretos e os links sejam gerados
com o protocolo https:
nos templates.
http:
# endereço IP, faixa (ou seja, 127.0.0.1/8) ou matriz destes valores
proxy: 127.0.0.1 # (string|string[]) não tem padrão
Sessão
Configurações básicas das sessões:
session:
# mostra painel da sessão em Tracy Bar?
debugger: ... # (bool) falha em falso
# tempo de inatividade após o qual a sessão expira
expiration: 14 days # (string) por defeito a '3 horas'.
# quando começar a sessão?
autoStart: ... # (smart|always|never) por padrão para 'smart'...
# handler, serviço que implementa a interface SessionHandlerInterface
handler: @handlerService
A opção autoStart
controla quando iniciar a sessão. O valor always
significa que a sessão é
sempre iniciada quando a aplicação é iniciada. O valor smart
significa que a sessão será iniciada quando a
aplicação começar somente se ela já existir, ou no momento em que quisermos ler ou escrever para ela. Finalmente, o valor
never
desabilita o início automático da sessão.
Você também pode definir todas as diretrizes de sessão PHP (em formato camelCase) e também lerAndClose. Exemplo:
session:
# 'session.name' escrito como 'name
name: MYID
# 'session.save_path' escrito como 'savePath'.
savePath: "%tempDir%/sessões"
Sessão Cookie
O cookie da sessão é enviado com os mesmos parâmetros que os outros cookies, mas você pode alterá-los para ele:
session:
# que hospeda é permitido receber o cookie
cookieDomain: 'example.com' # (string|domain)
# restrições ao acessar pedidos de origem cruzada
cookieSamesite: ... # (Strict|Lax|None) tem como padrão Lax
A opção cookieSamesite
afeta se o cookie é enviado com pedidos de origem cruzada, o que proporciona alguma proteção
contra falsificações em locais cruzados.
Serviços de DI
Esses serviços são adicionados ao contêiner DI:
Nome | Tipo | Descrição |
---|---|---|
http.request |
Nette\Http\Request | solicitação HTTP |
http.response |
Nette\Http\Response | resposta HTTP |
session.session |
Nette\Http\Session | gerenciamento de sessão |