HTTP Yapılandırması

Nette HTTP için yapılandırma seçeneklerine genel bakış.

Tüm framework'ü değil de yalnızca bu kütüphaneyi kullanıyorsanız, yapılandırmayı nasıl yükleyeceğiniz hakkında bilgi edinin.

HTTP Başlıkları

http:
	# her istekle gönderilecek başlıklar
	headers:
		X-Powered-By: MyCMS
		X-Content-Type-Options: nosniff
		X-XSS-Protection: '1; mode=block'

	# X-Frame-Options başlığını etkiler
	frames: ...      # (string|bool) varsayılan 'SAMEORIGIN'

Framework, güvenlik nedeniyle, sayfanın başka bir sayfa içinde ( <iframe> öğesinde) yalnızca aynı alan adında bulunuyorsa görüntülenebileceğini söyleyen X-Frame-Options: SAMEORIGIN başlığını gönderir. Bu bazı durumlarda istenmeyebilir (örneğin, Facebook için bir uygulama geliştiriyorsanız), davranış bu nedenle frames: http://allowed-host.com veya frames: true ayarlanarak değiştirilebilir.

Content Security Policy

Content-Security-Policy (bundan sonra CSP) başlıklarını kolayca oluşturabilirsiniz, açıklamaları CSP açıklaması içinde bulunabilir. CSP yönergeleri (ör. script-src) ya belirtimlere göre dizeler olarak ya da daha iyi okunabilirlik için değer dizileri olarak yazılabilir. O zaman 'self' gibi anahtar kelimelerin etrafına tırnak işareti koymaya gerek yoktur. Nette ayrıca otomatik olarak bir nonce değeri oluşturur, böylece başlıkta örneğin 'nonce-y4PopTLM==' olacaktır.

http:
	# Content Security Policy
	csp:
		# CSP belirtimine göre dize biçimi
		default-src: "'self' https://example.com"

		# değer dizisi
		script-src:
			- nonce
			- strict-dynamic
			- self
			- https://example.com

		# anahtarlar durumunda bool
		upgrade-insecure-requests: true
		block-all-mixed-content: false

Şablonlarda <script n:nonce>...</script> kullanın ve nonce değeri otomatik olarak eklenecektir. Nette'de güvenli web siteleri yapmak gerçekten kolaydır.

Benzer şekilde, Content-Security-Policy-Report-Only (CSP ile eş zamanlı olarak kullanılabilir) ve Feature Policy başlıkları da oluşturulabilir:

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

HTTP çerezi

Nette\Http\Response::setCookie() metodunun ve oturumun bazı parametrelerinin varsayılan değerlerini değiştirebilirsiniz.

http:
	# yola göre çerez kapsamı
	cookiePath: ...          # (string) varsayılan '/'

	# çerezleri kabul eden alan adları
	cookieDomain: 'example.com'  # (string|domain) varsayılan ayarlanmamış

	# çerezi yalnızca HTTPS üzerinden gönder?
	cookieSecure: ...        # (bool|auto) varsayılan auto

	# Nette tarafından CSRF koruması olarak kullanılan çerezin gönderilmesini devre dışı bırakır
	disableNetteCookie: ...  # (bool) varsayılan false

cookieDomain niteliği, hangi alan adlarının çerezi kabul edebileceğini belirtir. Belirtilmezse, çerez onu ayarlayan aynı (alt) alan adı tarafından kabul edilir, ancak alt alan adları tarafından değil. cookieDomain belirtilirse, alt alan adları da dahil edilir. Bu nedenle, cookieDomain belirtmek, atlamaktan daha az kısıtlayıcıdır.

Örneğin, cookieDomain: nette.org ile çerezler doc.nette.org gibi tüm alt alan adlarında da kullanılabilir. Aynı şey özel domain değeriyle, yani cookieDomain: domain ile de elde edilebilir.

cookieSecure niteliğindeki varsayılan auto değeri, web sitesi HTTPS üzerinde çalışıyorsa, çerezlerin Secure bayrağıyla gönderileceği ve dolayısıyla yalnızca HTTPS üzerinden erişilebilir olacağı anlamına gelir.

HTTP proxy

Web sitesi bir HTTP proxy arkasında çalışıyorsa, HTTPS üzerinden bağlantı algılamasının ve ayrıca istemcinin IP adresinin doğru çalışması için IP adresini belirtin. Yani Nette\Http\Request::getRemoteAddress() ve isSecured() fonksiyonlarının doğru değerleri döndürmesi ve şablonlarda https: protokolü ile bağlantıların oluşturulması için.

http:
	# IP adresi, aralık (ör. 127.0.0.1/8) veya bu değerlerin dizisi
	proxy: 127.0.0.1       # (string|string[]) varsayılan ayarlanmamış

Oturum (Session)

Temel oturum ayarları:

session:
	# Tracy Bar'da oturum panelini göster?
	debugger: ...        # (bool) varsayılan false

	# oturumun sona ereceği etkinlik dışı kalma süresi
	expiration: 14 days  # (string) varsayılan '3 hours'

	# oturum ne zaman başlatılmalı?
	autoStart: ...       # (smart|always|never) varsayılan 'smart'

	# handler, SessionHandlerInterface arayüzünü uygulayan servis
	handler: @handlerService

autoStart seçeneği, oturumun ne zaman başlatılacağını kontrol eder. always değeri, oturumun her zaman uygulamanın başlatılmasıyla birlikte başlatılacağı anlamına gelir. smart değeri, oturumun yalnızca zaten varsa veya ondan okumak veya ona yazmak istediğimiz anda uygulamanın başlangıcında başlatılacağı anlamına gelir. Ve son olarak, never değeri oturumun otomatik olarak başlatılmasını yasaklar.

Ayrıca, tüm PHP oturum yönergeleri (camelCase biçiminde) ve ayrıca readAndClose ayarlanabilir. Örnek:

session:
	# 'session.name' 'name' olarak yazılır
	name: MYID

	# 'session.save_path' 'savePath' olarak yazılır
	savePath: "%tempDir%/sessions"

Oturum çerezi

Oturum çerezi diğer çerezler ile aynı parametrelerle gönderilir, ancak bunlar sizin için değiştirilebilir:

session:
	# çerezleri kabul eden alan adları
	cookieDomain: 'example.com'   # (string|domain)

	# başka bir alan adından erişimde kısıtlama
	cookieSamesite: None          # (Strict|Lax|None) varsayılan Lax

cookieSamesite niteliği, çerezin başka bir alan adından erişim sırasında gönderilip gönderilmeyeceğini etkiler, bu da Cross-Site Request Forgery (CSRF) saldırılarına karşı bir miktar koruma sağlar.

DI Servisleri

Bu servisler DI konteynerine eklenir:

İsim Tip Açıklama
http.request Nette\Http\Request HTTP isteği
http.response Nette\Http\Response HTTP yanıtı
session.session Nette\Http\Session oturum yönetimi
versiyon: 4.0