EC-CUBE / EC-CUBE/ec-cube

ログイン後にトップページではなく、元のページへ戻れるようにもする

Open
#1,298 5 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
PHP
Stars
788
Forks
719
Avg merge
4d 4h
Merged PRs (30d)
39

Description

ref #831、 #1174 からの派生

ログインした際に、以下の条件で遷移先が決まるが、これにログインページへ遷移した元のページへ戻れるようにもする。
### 現在の仕様
1. ``が`form`タグに含まれる場合は、その URL に遷移する
2. ログインページが表示された際の URL (ブラウザのURL)が`url('mypage_login')`ではない場合は、その URL に遷移する
3. Firewall 設定に`default_target_path`が設定されている場合は、その URL に遷移する
4. トップページに遷移する

※この他にも Firewall の設定でいろいろできるようだが省略
### 実装要件
- ログイン後に元のページ(ログイン画面へ遷移した元のページ)へリダイレクトする
- セキュリティを考慮する

セキュリティについては以下のとおり

> @Yangsin
> ただし、単純にリファラーを適用してそこへ遷移するとなると
> 別のサイトにログイン画面のリンクを貼られた場合、ログインを経由して別サイト画面に戻ってしまい、フィッシングなどの危険がありそうですので、リファラーのチェックや正規化を行うような処理が必要ではないかと思っています。
### 実装案

リファラーを使用する。
ただし、別サイトへ戻ってしまうようになるとフィッシングなどの危険があるため、ドメイン名、ポート番号、`app.config.root`などを使用して正しい遷移先かチェックする。正しくない場合はログインページへ戻る。

※現実的に実装できそうかも検討する余地がある
#### 懸念事項

ref #961 の場合のようにリクエスト時の URL と Webサーバ到達時の URL に差異がある場合にどうするか。

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.