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 |