Ρύθμιση του 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

Μπορείτε να αλλάξετε τις προεπιλεγμένες τιμές ορισμένων παραμέτρων των μεθόδων 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 συνεδρίας αποστέλλεται με τις ίδιες παραμέτρους όπως και τα άλλα 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 διαχείριση συνόδου
έκδοση: 4.0