Ρύθμιση του HTTP
Επισκόπηση των επιλογών διαμόρφωσης για το Nette HTTP.
Αν δεν χρησιμοποιείτε ολόκληρο το πλαίσιο, αλλά μόνο αυτή τη βιβλιοθήκη, διαβάστε πώς να φορτώσετε τη διαμόρφωση.
Κεφαλίδες HTTP
http:
# επικεφαλίδες που αποστέλλονται με κάθε αίτηση
headers:
X-Powered-By: MyCMS
X-Content-Type-Options: nosniff
X-XSS-Protection: '1; mode=block'
# επηρεάζει την επικεφαλίδα X-Frame-Options
frames: ... # (string|bool) προεπιλογή 'SAMEORIGIN'
Για λόγους ασφαλείας, το πλαίσιο στέλνει μια επικεφαλίδα
X-Frame-Options: SAMEORIGIN
, η οποία λέει ότι μια σελίδα μπορεί να εμφανιστεί
μέσα σε μια άλλη σελίδα (στο στοιχείο <iframe>
) μόνο εάν αυτή
βρίσκεται στον ίδιο τομέα. Αυτό μπορεί να είναι ανεπιθύμητο σε
ορισμένες περιπτώσεις (για παράδειγμα, αν αναπτύσσετε μια εφαρμογή στο
Facebook), οπότε η συμπεριφορά μπορεί να αλλάξει με τον καθορισμό των
πλαισίων frames: http://allowed-host.com
.
Πολιτική ασφάλειας περιεχομένου
Οι επικεφαλίδες Content-Security-Policy
(εφεξής CSP) μπορούν να
συναρμολογηθούν εύκολα, η περιγραφή τους μπορεί να βρεθεί στην περιγραφή CSP. Οι οδηγίες CSP (όπως script-src
)
μπορούν να γραφούν είτε ως συμβολοσειρές σύμφωνα με τις προδιαγραφές
είτε ως πίνακες τιμών για καλύτερη αναγνωσιμότητα. Τότε δεν χρειάζεται
να γράφονται εισαγωγικά γύρω από λέξεις-κλειδιά όπως το 'self'
. Η
Nette θα παράγει επίσης αυτόματα μια τιμή του nonce
, έτσι ώστε το
'nonce-y4PopTLM=='
να αποστέλλεται στην επικεφαλίδα.
http:
# Πολιτική ασφάλειας περιεχομένου
csp:
# συμβολοσειρά σύμφωνα με την προδιαγραφή CSP
default-src: "'self' https://example.com"
# πίνακας τιμών
script-src:
- nonce
- strict-dynamic
- self
- https://example.com
# bool στην περίπτωση των διακοπτών
upgrade-insecure-requests: true
block-all-mixed-content: false
Χρήση <script n:nonce>...</script>
στα πρότυπα και η τιμή nonce θα
συμπληρωθεί αυτόματα. Η δημιουργία ασφαλών ιστότοπων στη Nette είναι
πραγματικά εύκολη.
Ομοίως, μπορούν να προστεθούν οι επικεφαλίδες
Content-Security-Policy-Report-Only
(οι οποίες μπορούν να χρησιμοποιηθούν
παράλληλα με το CSP) και η Πολιτική χαρακτηριστικών:
http:
# Έκθεση πολιτικής ασφάλειας περιεχομένου Μόνο
cspReportOnly:
default-src: self
report-uri: 'https://my-report-uri-endpoint'
# Πολιτική χαρακτηριστικών
featurePolicy:
unsized-media: none
geolocation:
- self
- https://example.com
HTTP Cookie
Μπορείτε να αλλάξετε τις προεπιλεγμένες τιμές ορισμένων παραμέτρων των μεθόδων Nette\Http\Response::setCookie() και session.
http:
# Πεδίο εφαρμογής cookie ανά διαδρομή
cookiePath: ... # (συμβολοσειρά) προεπιλογή '/'
# ποιοι υπολογιστές επιτρέπεται να λάβουν το cookie
cookieDomain: 'example.com' # (string|domain) με προεπιλογή unset
# να αποστέλλονται cookies μόνο μέσω HTTPS;
cookieSecure: ... # (bool|auto) προεπιλογή σε auto
# απενεργοποιεί την αποστολή του cookie που χρησιμοποιεί η Nette ως προστασία κατά του CSRF
disableNetteCookie: ... # (bool) προεπιλογή σε false
Η επιλογή cookieDomain
καθορίζει ποιοι τομείς (origins) μπορούν να
δέχονται cookies. Αν δεν καθοριστεί, το cookie γίνεται αποδεκτό από το ίδιο
(υπο)domain που έχει οριστεί από αυτό, εξαιρώντας τα υποτομείς τους. Αν
καθοριστεί η επιλογή cookieDomain
, τότε συμπεριλαμβάνονται και τα
subdomains. Επομένως, ο προσδιορισμός του cookieDomain
είναι λιγότερο
περιοριστικός από την παράλειψη.
Για παράδειγμα, αν οριστεί το cookieDomain: nette.org
, το cookie είναι επίσης
διαθέσιμο σε όλα τα subdomains όπως το doc.nette.org
. Αυτό μπορεί επίσης να
επιτευχθεί με την ειδική τιμή domain
, δηλαδή cookieDomain: domain
.
Η προεπιλεγμένη τιμή του cookieSecure
είναι auto
, πράγμα που
σημαίνει ότι εάν ο ιστότοπος εκτελείται σε HTTPS, τα cookies θα αποστέλλονται
με τη σημαία Secure
και επομένως θα είναι διαθέσιμα μόνο
μέσω HTTPS.
Μεσολάβηση HTTP
Εάν ο ιστότοπος λειτουργεί πίσω από έναν διακομιστή μεσολάβησης HTTP,
εισαγάγετε τη διεύθυνση IP του διακομιστή μεσολάβησης, ώστε να
λειτουργεί σωστά η ανίχνευση των συνδέσεων HTTPS, καθώς και τη διεύθυνση
IP του πελάτη. Δηλαδή, έτσι ώστε οι Nette\Http\Request::getRemoteAddress() και isSecured() να επιστρέφουν τις σωστές τιμές και να
δημιουργούνται σύνδεσμοι με το πρωτόκολλο https:
στα πρότυπα.
http:
# Διεύθυνση IP, περιοχή (π.χ. 127.0.0.1/8) ή συστοιχία αυτών των τιμών
proxy: 127.0.0.1 # (string|string[]) προεπιλογή σε none
Σύνοδος
Βασικές ρυθμίσεις συνεδριών:
session:
# εμφανίζει πάνελ συνεδρίας στο Tracy Bar;
debugger: ... # (bool) προεπιλογή false
# χρόνος αδράνειας μετά τον οποίο λήγει η σύνοδος
expiration: 14 days # (string) προεπιλογή '3 ώρες'
# πότε θα ξεκινήσει η συνεδρία;
autoStart: ... # (smart|always|never) προεπιλογή 'smart'
# handler, υπηρεσία που υλοποιεί τη διεπαφή SessionHandlerInterface
handler: @handlerService
Η επιλογή autoStart
ελέγχει πότε θα ξεκινήσει η σύνοδος. Η τιμή
always
σημαίνει ότι η σύνοδος ξεκινά πάντα κατά την εκκίνηση της
εφαρμογής. Η τιμή smart
σημαίνει ότι η σύνοδος θα ξεκινήσει κατά
την εκκίνηση της εφαρμογής μόνο αν υπάρχει ήδη ή τη στιγμή που θέλουμε
να διαβάσουμε από αυτήν ή να γράψουμε σε αυτήν. Τέλος, η τιμή never
απενεργοποιεί την αυτόματη εκκίνηση της συνόδου.
Μπορείτε επίσης να ορίσετε όλες τις οδηγίες συνόδου της PHP (σε μορφή camelCase) και επίσης το readAndClose. Παράδειγμα:
session:
# 'session.name' γραμμένο ως 'όνομα'
name: MYID
# 'session.save_path' γραμμένο ως 'savePath'
savePath: "%tempDir%/sessions"
Cookie συνόδου
Το cookie συνεδρίας αποστέλλεται με τις ίδιες παραμέτρους όπως και τα άλλα cookies, αλλά μπορείτε να τις αλλάξετε:
session:
# ποιοι κεντρικοί υπολογιστές επιτρέπεται να λάβουν το cookie
cookieDomain: 'example.com' # (string|domain)
# περιορισμοί κατά την πρόσβαση σε cross-origin αίτημα
cookieSamesite: None # (Strict|Lax|None) προεπιλογή σε Lax
Η επιλογή cookieSamesite
επηρεάζει το αν το cookie αποστέλλεται με αιτήσεις cross-origin, γεγονός που
παρέχει κάποια προστασία από επιθέσεις Cross-Site Request Forgery.
Υπηρεσίες DI
Αυτές οι υπηρεσίες προστίθενται στο δοχείο DI:
Όνομα | Τύπος | Περιγραφή |
---|---|---|
http.request |
Nette\Http\Request | Αίτημα HTTP |
http.response |
Nette\Http\Response | Απάντηση HTTP |
session.session |
Nette\Http\Session | διαχείριση συνόδου |