HTTP Yapılandırması
Nette HTTP'nin yapılandırma seçeneklerine genel bakış.
Framework'ün tamamını değil yalnızca bu kütüphaneyi kullanıyorsanız, yapılandırmanın nasıl yükleneceğini okuyun.
HTTP Header'ları
http:
# her yanıtla birlikte gönderilen header'lar
headers:
X-Powered-By: MyCMS
X-Content-Type-Options: nosniff
X-XSS-Protection: '1; mode=block'
# X-Frame-Options header'ını etkiler
frames: ... # (string|bool|null) varsayılan 'SAMEORIGIN'
Nette, güvenlik nedeniyle X-Frame-Options: SAMEORIGIN header'ını gönderir; bu, bir sayfanın başka bir
sayfanın içinde (bir <iframe> elemanında) yalnızca aynı alan adındaysa görüntülenebileceğini
belirtir. Bu, belirli durumlarda istenmeyebilir (örneğin bir Facebook uygulaması geliştiriyorsanız); dolayısıyla
davranış, belirli bir host'a izin vermek için frames: http://allowed-host.com, her yerden çerçevelemeye izin
vermek için frames: true (header atlanır) ya da tümüyle yasaklamak için frames: false
(X-Frame-Options: DENY) ayarlanarak değiştirilebilir.
Nette ayrıca varsayılan olarak X-Powered-By: Nette Framework 3 ve
Content-Type: text/html; charset=utf-8 header'larını gönderir. Bu varsayılanlar dahil herhangi bir header'ı,
değerini boş dize yaparak kaldırabilirsiniz.
Content Security Policy
Content-Security-Policy (CSP) header'ları kolayca yapılandırılabilir; açıklamaları CSP belirtiminde bulunabilir. CSP yönergeleri (örneğin script-src)
ya belirtime göre dize olarak ya da daha iyi okunurluk için değer dizileri olarak yazılabilir. O zaman 'self'
gibi anahtar sözcüklerin çevresinde tırnak kullanmaya gerek kalmaz. Nette ayrıca bir nonce değerini otomatik
üretir, dolayısıyla header'da 'nonce-y4PopTLM==' gibi bir şey gönderilir.
http:
# Content Security Policy
csp:
# CSP belirtimine göre dize
default-src: "'self' https://example.com"
# değer dizisi
script-src:
- nonce
- strict-dynamic
- self
- https://example.com
# anahtarlarda bool
upgrade-insecure-requests: true
block-all-mixed-content: false
Şablonlarda <script n:nonce>...</script> kullanın; nonce değeri otomatik doldurulur. Nette'te
güvenli web siteleri yapmak gerçekten kolaydır.
Benzer şekilde, Content-Security-Policy-Report-Only header'ları (CSP ile eşzamanlı kullanılabilir) ve Feature Policy de yapılandırılabilir:
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 bazı parametrelerinin ve oturum yönetiminin varsayılan değerlerini değiştirebilirsiniz.
http:
# çerezin yola göre kapsamı
cookiePath: ... # (string) varsayılan '/'
# çerezi alabilecek alan adları
cookieDomain: 'example.com' # (string|domain) varsayılan olarak ayarsız
# çerezler yalnızca HTTPS üzerinden mi gönderilsin?
cookieSecure: ... # (bool|auto) varsayılan auto
# Nette'in CSRF koruması için kullandığı çerezin gönderilmesini kapatır
disableNetteCookie: ... # (bool) varsayılan false
cookieDomain niteliği, çerezleri hangi alan adlarının (kaynakların) kabul edebileceğini belirler.
Belirtilmezse çerez, onu ayarlayan aynı (alt) alan adı tarafından kabul edilir, alt alan adları hariç.
cookieDomain belirtilirse alt alan adları da dahil olur. Bu yüzden cookieDomain belirtmek, onu
atlamaktan daha az kısıtlayıcıdır.
Örneğin cookieDomain: nette.org ayarlanırsa, çerezler doc.nette.org gibi tüm alt alan adlarında
da kullanılabilir. Bu, özel domain değeriyle, yani cookieDomain: domain ile de sağlanabilir.
cookieSecure niteliğinin 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 kullanılabileceği
anlamına gelir.
HTTP Proxy
Site bir HTTP proxy'nin arkasında çalışıyorsa, HTTPS bağlantısı saptamasının ve istemcinin IP adresinin doğru
çalışması için proxy'nin IP adresini girin. Yani Nette\Http\Request::getRemoteAddress() ve isSecured() metotlarının doğru değerleri döndürmesi ve
şablonlarda bağlantıların https: protokolüyle üretilmesi için.
http:
# IP adresi, aralık (örneğin 127.0.0.1/8) ya da bu değerlerden oluşan bir dizi
proxy: 127.0.0.1 # (string|string[]) varsayılan olarak ayarsız
HTTPS'i Zorlama
İsteğin şemasını koşulsuz olarak HTTPS'e zorlar. Bu, TLS'i sonlandıran ama X-Forwarded-Proto header'ını
iletmeyen bir yük dengeleyici ya da ters proxy arkasında çalışan, yalnızca HTTPS kullanan siteler için yararlıdır;
çünkü standart HTTPS saptaması (HTTP Proxy yapılandırılmış olsa bile) bunu yakalayamaz.
http:
# tüm isteklerde HTTPS şemasını zorla
forceHttps: true # (bool) varsayılan false
Oturum
Temel oturum ayarları:
session:
# oturum paneli Tracy Bar'da gösterilsin mi?
debugger: ... # (bool) varsayılan false
# oturumun sona ereceği hareketsizlik süresi
expiration: 14 days # (string) varsayılan '3 hours'
# oturum ne zaman başlasın?
autoStart: ... # (smart|always|never) varsayılan 'smart'
# handler, SessionHandlerInterface uygulayan bir servis
handler: @handlerService
autoStart seçeneği, oturumun ne zaman başlaması gerektiğini denetler. always değeri, oturumun
uygulama her başladığında başlaması demektir. smart değeri, oturumun uygulamayla birlikte yalnızca zaten
varsa ya da ondan okumak veya ona yazmak istediğimiz anda başlaması demektir. Son olarak never değeri, oturumun
otomatik başlamasını kapatır.
Ayrıca tüm PHP oturum yönergelerini (camelCase biçiminde) ve ayrıca readAndClose seçeneğini ayarlayabilirsiniz. Ö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 çerezlerle aynı parametrelerle gönderilir, ama bunları özellikle onun için değiştirebilirsiniz:
session:
# çerezi alabilecek alan adları
cookieDomain: 'example.com' # (string|domain)
# kaynaklar arası erişim kısıtı
cookieSamesite: None # (Strict|Lax|None) varsayılan Lax
cookieSamesite niteliği, çerezin kaynaklar
arası isteklerde gönderilip gönderilmeyeceğini etkiler; bu da Cross-Site Request Forgery (CSRF)
saldırılarına karşı bir ölçüde koruma sağlar.
DI Servisleri
DI container'a şu servisler eklenir:
| Ad | Tür | 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 |
http.requestFactory |
Nette\Http\RequestFactory | HTTP isteğini oluşturan factory |