Configuración de HTTP
Resumen de las opciones de configuración del HTTP de Nette.
Si no está utilizando todo el framework, sino sólo esta librería, lea cómo cargar la configuración.
Cabeceras HTTP
http:
# cabeceras que se envían con cada solicitud
headers:
X-Powered-By: MyCMS
X-Content-Type-Options: nosniff
X-XSS-Protection: '1; mode=block'
# afecta a la cabecera X-Frame-Options
frames: ... # (string|bool) defaults to 'SAMEORIGIN'
Por razones de seguridad, el framework envía una cabecera X-Frame-Options: SAMEORIGIN
, que dice que una página
puede mostrarse dentro de otra (en el elemento <iframe>
) sólo si está en el mismo dominio. Esto puede
resultar indeseado en determinadas situaciones (por ejemplo, si se está desarrollando una aplicación para Facebook), por lo que
el comportamiento puede modificarse configurando los marcos frames: http://allowed-host.com
.
Política de seguridad de contenidos
Las cabeceras Content-Security-Policy
(en lo sucesivo CSP) pueden ensamblarse fácilmente, su descripción puede
encontrarse en la descripción CSP. Las directivas CSP (como
script-src
) pueden escribirse como cadenas de acuerdo con la especificación o como matrices de valores para una
mejor legibilidad. Entonces no es necesario escribir comillas alrededor de palabras clave como 'self'
. Nette también
generará automáticamente un valor de nonce
, por lo que 'nonce-y4PopTLM=='
se enviará en la
cabecera.
http:
# Content Security Policy
csp:
# cadena según especificación CSP
default-src: "'self' https://example.com"
# array of values
script-src:
- nonce
- strict-dynamic
- self
- https://example.com
# bool en el caso de los interruptores
upgrade-insecure-requests: true
block-all-mixed-content: false
Utilice <script n:nonce>...</script>
en las plantillas y el valor nonce se rellenará
automáticamente. Hacer sitios web seguros en Nette es realmente fácil.
Del mismo modo, se pueden añadir las cabeceras Content-Security-Policy-Report-Only
(que se puede utilizar en
paralelo con CSP) y Feature Policy:
http:
# Content Security Policy Report-Only
cspReportOnly:
default-src: self
report-uri: 'https://my-report-uri-endpoint'
# Feature Policy
featurePolicy:
unsized-media: none
geolocation:
- self
- https://example.com
Cookie HTTP
Puede cambiar los valores por defecto de algunos parámetros de los métodos Nette\Http\Response::setCookie() y session.
http:
# cookie scope by path
cookiePath: ... # (string) por defecto '/'
# qué hosts pueden recibir la cookie
cookieDomain: 'example.com' # (string|dominio) por defecto unset
# ¿enviar cookies sólo a través de HTTPS?
cookieSecure: ... # (bool|auto) por defecto auto
# deshabilita el envío de la cookie que Nette usa como protección contra CSRF
disableNetteCookie: ... # (bool) por defecto false
La opción cookieDomain
determina qué dominios (orígenes) pueden aceptar cookies. Si no se especifica, la cookie
es aceptada por el mismo (sub)dominio que la establece, excluyendo sus subdominios. Si se especifica
cookieDomain
, también se incluyen los subdominios. Por lo tanto, especificar cookieDomain
es menos
restrictivo que omitirlo.
Por ejemplo, si se establece cookieDomain: nette.org
, la cookie también está disponible en todos los subdominios
como doc.nette.org
. Esto también se puede conseguir con el valor especial domain
, es decir,
cookieDomain: domain
.
El valor por defecto de cookieSecure
es auto
, lo que significa que si el sitio web funciona con
HTTPS, las cookies se enviarán con la bandera Secure
y, por lo tanto, sólo estarán disponibles a través
de HTTPS.
Proxy HTTP
Si el sitio se ejecuta detrás de un proxy HTTP, introduzca la dirección IP del proxy para que la detección de conexiones
HTTPS funcione correctamente, así como la dirección IP del cliente. Es decir, para que Nette\Http\Request::getRemoteAddress() y isSecured() devuelvan los valores correctos y se generen enlaces con el protocolo
https:
en las plantillas.
http:
# dirección IP, rango (ej. 127.0.0.1/8) o array de estos valores
proxy: 127.0.0.1 # (string|string[]) por defecto ninguno
Sesión
Configuración básica de las sesiones:
session:
# ¿muestra el panel de sesión en Tracy Bar?
depurador: ... # (bool) por defecto false
# tiempo de inactividad tras el cual expira la sesión
expiración: 14 días # (string) por defecto '3 horas'
# ¿cuándo iniciar la sesión?
autoStart: ... # (smart|always|never) por defecto 'smart
# handler, servicio que implementa la interfaz SessionHandlerInterface
handler: @handlerService
La opción autoStart
controla cuándo iniciar la sesión. El valor always
significa que la sesión se
inicia siempre al arrancar la aplicación. El valor smart
significa que la sesión se iniciará al arrancar la
aplicación sólo si ya existe, o en el momento en que queramos leer de ella o escribir en ella. Por último, el valor
never
desactiva el inicio automático de la sesión.
También se pueden establecer todas las directivas de sesión de PHP (en formato camelCase) y también readAndClose. Ejemplo:
session:
# 'session.name' written as 'name'
name: MYID
# 'session.save_path' written as 'savePath'
savePath: "%tempDir%/sessions"
Cookie de sesión
La cookie de sesión se envía con los mismos parámetros que otras cookies, pero puede cambiarlos:
session:
# qué hosts pueden recibir la cookie
cookieDomain: 'example.com' # (string|dominio)
# restricciones al acceder a la solicitud de origen cruzado
cookieSamesite: None # (Strict|Lax|None) por defecto Lax
La opción cookieSamesite
afecta a si la cookie se envía con solicitudes de origen cruzado, lo que proporciona cierta
protección contra ataques de falsificación de
solicitud de sitios cruz ados.
Servicios DI
Estos servicios se añaden al contenedor DI:
Nombre | Tipo | Descripción |
---|---|---|
http.request |
Nette\Http\Request | solicitud HTTP |
http.response |
Nette\Http\Response | respuesta HTTP |
session.session |
Nette\Http\Session | gestión de sesión |