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
または frames: true
を設定することで動作を変更できます。
Content Security Policy
Content-Security-Policy
(以下 CSP)ヘッダーを簡単に作成できます。その説明はCSP の説明にあります。CSP
ディレクティブ(例:script-src
)は、仕様に従って文字列として記述するか、読みやすさのために値の配列として記述できます。その場合、'self'
のようなキーワードの周りに引用符を書く必要はありません。Nette は nonce
値も自動的に生成するため、ヘッダーには例えば 'nonce-y4PopTLM=='
が含まれます。
http:
# Content Security Policy
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 と並行して使用可能)と Feature Policy を作成できます:
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 クッキー
Nette\Http\Response::setCookie() メソッドとセッションの一部のパラメータのデフォルト値を変更できます。
http:
# パスによるクッキーの到達範囲
cookiePath: ... # (string) デフォルトは '/'
# クッキーを受け入れるドメイン
cookieDomain: 'example.com' # (string|domain) デフォルトは未設定
# HTTPS 経由でのみクッキーを送信しますか?
cookieSecure: ... # (bool|auto) デフォルトは auto
# Nette が CSRF 保護として使用するクッキーの送信を無効にします
disableNetteCookie: ... # (bool) デフォルトは false
cookieDomain
属性は、どのドメインがクッキーを受け入れることができるかを指定します。指定されていない場合、クッキーは設定したのと同じ(サブ)ドメインを受け入れますが、そのサブドメインは受け入れません。cookieDomain
が指定されている場合、サブドメインも含まれます。したがって、cookieDomain
を指定する方が、省略するよりも制限が緩くなります。
例えば、cookieDomain: nette.org
の場合、クッキーは doc.nette.org
のようなすべてのサブドメインでも利用可能です。これは特別な値 domain
、つまり
cookieDomain: domain
を使用しても達成できます。
cookieSecure
属性のデフォルト値 auto
は、ウェブサイトが HTTPS
で実行されている場合、クッキーは Secure
フラグ付きで送信され、したがって HTTPS
経由でのみ利用可能になることを意味します。
HTTP プロキシ
ウェブサイトが HTTP プロキシの背後で実行されている場合は、HTTPS
経由の接続検出とクライアントの IP アドレスが正しく機能するように、その IP
アドレスを指定します。つまり、Nette\Http\Request::getRemoteAddress() 関数と isSecured() 関数が正しい値を返し、テンプレートで
https:
プロトコルを持つリンクが生成されるようにします。
http:
# IP アドレス、範囲(例:127.0.0.1/8)、またはこれらの値の配列
proxy: 127.0.0.1 # (string|string[]) デフォルトは未設定
セッション
セッションの基本設定:
session:
# Tracy Bar にセッションパネルを表示しますか?
debugger: ... # (bool) デフォルトは false
# セッションが期限切れになるまでの非アクティブ期間
expiration: 14 days # (string) デフォルトは '3 hours'
# セッションはいつ開始されるべきですか?
autoStart: ... # (smart|always|never) デフォルトは 'smart'
# ハンドラ、SessionHandlerInterface インターフェースを実装するサービス
handler: @handlerService
autoStart
オプションは、セッションをいつ開始するかを制御します。値 always
は、アプリケーションの起動時に常にセッションが開始されることを意味します。値
smart
は、セッションが既に存在する場合、または読み取りまたは書き込みを行いたい場合にのみ、アプリケーションの起動時にセッションが開始されることを意味します。そして最後に、値
never
はセッションの自動開始を禁止します。
さらに、すべての PHP セッションディレクティブ(camelCase 形式)と readAndClose を設定できます。例:
session:
# 'session.name' は 'name' として記述します
name: MYID
# 'session.save_path' は 'savePath' として記述します
savePath: "%tempDir%/sessions"
セッションクッキー
セッションクッキーは他のクッキーと同じパラメータで送信されますが、これらを変更できます:
session:
# クッキーを受け入れるドメイン
cookieDomain: 'example.com' # (string|domain)
# 他のドメインからのアクセス時の制限
cookieSamesite: None # (Strict|Lax|None) デフォルトは Lax
cookieSamesite
属性は、他のドメインからのアクセス時にクッキーが送信されるかどうかに影響します。これは、クロスサイトリクエストフォージェリ(CSRF)攻撃に対するある程度の保護を提供します。
DI サービス
これらのサービスは DI コンテナに追加されます:
名前 | 型 | 説明 |
---|---|---|
http.request |
Nette\Http\Request | HTTP リクエスト |
http.response |
Nette\Http\Response | HTTP レスポンス |
session.session |
Nette\Http\Session | セッション管理 |