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

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"

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
versão: 4.0