質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

7682閲覧

[Laravel]config変更したが、secure属性 + httponlyの設定が変わらない

kazoogon

総合スコア281

Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

2クリップ

投稿2019/05/16 08:00

編集2019/05/16 21:44

環境

PHP 7.1.19
Laravel 5.4

実現したいこと

Laravelにてcookieにsecure属性とhttponlyの設定をしたい

困っていること

config/session.phpの中身を下記の様に変更

'secure' => env('SESSION_SECURE_COOKIE', true), //trueに 'http_only' => true, //trueに


php artisan config:clearでcacheをクリアー

しかし画像のようにcookieの設定に変化なし(1つHTTPにチェックついてますが、これは別のです)
イメージ説明

ここから次何を変えて試していけば良いか不明なので、こちらでご質問させていただきました。
よろしくお願いいたします。

追記

下記の様にconfig/session.phpを変更、cache clearしてもブラウザ上では「laravel_session」のままであることを発見。
そもそもファイルが効いていないのか。。?

'cookie' => 'laravel_sessionhogehoge',


(追加)

php artisan tinker >>> config('session.cookie'); => "laravel_sessionhogehoge"

でファイル自体は反映されている事を確認

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/05/16 08:22

Webサーバー再起動試しましたか?
kazoogon

2019/05/16 11:21

回答ありがとうございます。 再起動しても変化ありませんでしたね。。
guest

回答3

0

自己解決

virtualhost上の違うディレクトリを使用すると正常に動作しました汗

投稿2019/05/20 13:50

kazoogon

総合スコア281

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

laravel のコード読んでないけど、これじゃない?
PHP の cookie secure 属性で勘違いしてたはずかしい話。。。

投稿2019/05/17 00:42

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

laravelの設定の確認方法ですが

php artisan tinker

で、tinkerに入ります(Laravelのphp -aみたいな感じ、railsでいう rails console的なやつ)

tinker内ではLaravelの機能が使えるので、config('session.cookie');のように、PHPコードを実行すると実行結果が表示されます。
この方法で

そもそもファイルが効いていないのか。。?

という部分の問題は切り分けができると思います。


追記
可能性の提示です。

  • すでにcookieがセットされている場合、htt_onlyをつけても上書きされない・・・とかあるかも
  • secureは、HTTPSで通信している場合のみ、つける。httpでつけたやつが、httpsに上書きされるかは微妙?
    • リバースプロキシ系のHTTPSになっているレンタルサーバ(さくらとかconohaWingとか)は、Laravel自身はHTTPだと思わされているので、HTTPSで分岐という処理担っている場合、うまくいかないかも

本題とは別になってしまうんですが、下記についてご留意ください。

'secure' => env('SESSION_SECURE_COOKIE', true), //trueに

これなんですが

'secure' => env('SESSION_SECURE_COOKIE', false)

'secure' => env('SESSION_SECURE_COOKIE', true), //trueに

変更した、という事でしょうか。
これでも動くんですが

env関数の第二引数は、第一引数で与えた環境変数がない場合、第二引数をデフォルトとする
となるので、環境変数 SESSION_SECURE_COOKIE に依存する形の結果になるため、確実ではありません。
(まあ、SESSION_SECURE_COOKIEは設定されてない事がほとんどかと思いますが)

.envにSESSION_SECURE_COOKIEを書き加えるか、

'secure' => true

とだけ書く方が確実でしょう。

投稿2019/05/16 20:14

編集2019/05/16 20:24
mikkame

総合スコア5036

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazoogon

2019/05/16 21:42

回答ありがとうございます。 tinkerのアドバイスありがとうございます。こちらではsessionの変更が確認できました。 (また記載忘れておりましたが、.envにSESSION_SECURE_COOKIEは設定してあります)
kazoogon

2019/05/16 21:59

> すでにcookieがセットされている場合、htt_onlyをつけても上書きされない・・・とかあるかも これはブラウザの要素の検証からcookieを消して対応していますが、それで間違いないですかね??
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問