PHPを使用して、混合https/httpウェブサイトを構築しています。ユーザーが(https経由で)ログインすると、ユーザー名とセッションで安全なCookieが設定されます。ログイン後(Cookieが設定された後)、ログインした後に各ページにユーザー固有のコンテンツがあるので、すべてのトラフィックをhttpsにリダイレクトしたいと思います。元々はhttpsだけを使用するように設定されていましたが、それは、必要なときにだけSSLを使用する方が良いと思われます(ユーザーがhttpでログインしていないときに使用されます)。私はこれをPHP/javascriptを使って、または.htaccessファイルにクッキーに関するいくつかのコマンドを追加することで達成できますか?前もって感謝します!ユーザーがログインした後、すべてのWebページをHTTPSにリダイレクトしますか?
答えて
これはそうでない場合、これはちょうどふりセキュリティをされた(session.cookie_secure
を使用)、あなただけのHTTPS上で動作するようにセッションを設定していると仮定しています。だから、あなたが検出した場合はfalseまたはそれを解除に設定することを忘れない
RewriteCond %{HTTP_COOKIE} wantshttps=true
RewriteCOnd %{HTTPS} !on
RewriteCOnd %{REQUEST_METHOD} !POST
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,QSA]
を:
setcookie('wantshttps','true',0,'/');
そして.htaccess
中:
はまた、ログイン時に(HTTP、HTTPSではなく)クッキーを設定することができますクッキーは「真」であるが、ログインしていないユーザ(セッションは期限切れなど)である。
ありがとう!これは完全に機能します。 – ORL
HTTPSプロトコルはMan-In-The-Middle攻撃を防ぎますが、この 'wantshttps'クッキーはHTTP経由で送信されることを意図しています。この場合、それは操作することができ、セッションクッキーもプレーンテキストに送られるので、無用になります。 – martinstoeckli
@martinstoeckli:thats点:誰でも_May_は、HTTPSが必要だと知っていますが、セッションCookieは_HTTPS_でのみ送信される_configured_です。これはページへのリクエスト(ユーザーはログアウトしたユーザー/ゲストとして見えることになります)を捕捉し、ユーザーがログインしているhttpsページにリダイレクトします。もちろん、ほとんどのリクエスト/内部リンクは自動的にhttpsを使用しますが、ユーザーをログアウトしたhttp-variantからログインしたhttps veriantにリダイレクトする他のサイトのリンクをキャッチします。 – Wrikken
php.net header()
機能を見
HTMLのURLが考慮される限り、相対URLはベースアドレスのプロトコルを使用するため、これを処理する必要があります。他のサイトへの参照が必要な場合は、プロトコル名とコロンを省略したURLを使用できます。 //www.example.com/fooこれは、参照ページのプロトコルに応じてhttp://www.example.com/fooまたはhttps://www.example.com/fooと解釈されます。
httpsなしで別のソース/リンクからウェブサイトを(逆リンクして)到着しない限り、訪問者の観点から「突然ログアウトされています」(http/httpsの違い)が混乱しています。したがって、これは有効なコメントですが、もちろん内部リンクにも使用する必要がありますが、検出とリダイレクトはお客様のためにやさしいものです。 – Wrikken
@Wrikken - 要求されたページ全体が保護されているか、HTTPリンクで**コンテンツを表示していないか、またはページが公開されている必要があります.HTTPでリクエストされたときにユーザー固有のコンテンツを除外できます。 – martinstoeckli
それはポイントです:HTTP上でユーザー固有のコンテンツはありませんが、リンクがゲスト(貧弱なコンテンツ)とログインユーザー(余分な機能)の両方に有効で、反映されない多くのアプリケーションがありますこのURLは外部リンクであるため、ユーザーがこのリンクを訪問することを詮索することができます(公開コンテンツのみを使用していることを察知することができます) )は安全性の問題ではない。 – Wrikken
- 1. OpenId + JSFはログインしたページにユーザーをリダイレクトしますか?
- 2. ログイン後にすべてのユーザーがブロックされました
- 3. ログイン後にページにリダイレクトしようとしていました
- 4. ログイン後にユーザーが新しいページにリダイレクトされる理由
- 5. react-navigationとreduxでログインした後にユーザーをリダイレクトします
- 6. HttpWebRequestを使用してHttps Webサイトにログインした後のHtmlagilitypack?
- 7. phpフレームワークlaravelを使用してログインした後にページをリダイレクト
- 8. ログインしていない場合、ユーザーを別のページにリダイレクトしますか?
- 9. wordpressで最初にログインした後にユーザーをリダイレクトしますか?
- 10. ユーザーがログインした後、どのように保護されたページにリダイレクトするのですか?
- 11. ログイン後のすべてのWebページのユーザー名をAngularで表示
- 12. ログイン後にユーザーをリダイレクト
- 13. ログイン後にユーザーを意図したURLにリダイレクトするReactjs
- 14. Laravelはログイン後もすべてのページにログインするようにリダイレクトします
- 15. ログインに成功した後、別のページをリダイレクトする方法
- 16. JavaScriptが別のページにリダイレクトされた後、Laravelがログインにリダイレクトされます
- 17. Steam - ログイン後に最後にアクセスしたページをリダイレクト
- 18. ログイン後別のページにリダイレクト
- 19. HtmlUnit - Webサイトへのログイン後にページがリダイレクトされない
- 20. 安全なドキュメントにログインした後、ユーザーをリダイレクトするJoomla
- 21. laravel 5.1でログインした後にユーザーをリダイレクトする
- 22. ユーザーをログインにリダイレクトするページ
- 23. ログイン後、別のページにリダイレクトしてセッションを終了し、ログアウトした後にセッションを破棄します。
- 24. cakephpを使用してログインした後の現在のページにリダイレクトする3.4.7
- 25. Zend:電子メールからのURLでログインした後、ページにリダイレクト
- 26. ユーザーがログインした後にタスクを完了しますか?
- 27. ユーザーがログインしていない場合は登録ページにリダイレクト
- 28. ユーザーにリダイレクトする方法:/ id成功したログイン後にログインする - レール3
- 29. ユーザーがログインしていない場合のページのリダイレクト
- 30. ログイン後asp.netでセッションがタイムアウトしたページにリダイレクト
Cookieとセッションで操作する場合、常にHTTPSを常に使用する必要があります。そうしないと、HTTP経由のセッションCookieを第三者が簡単に取得できます。 https://www.owasp.org/index.php/Session_hijacking_attackとhttps://www.owasp.org/index.php/Session_Management_Cheat_Sheet – hakre
を参照してください。ログイン時にsession_regenerate_id()を使用していることを確認してください。前のセッションIDが送信されます。 httpは決して役に立たない。これにより、セッションハイジャックの危険のいくつかが防止されます。 – Gerben
以前のセッションIDはhttp?私が懸念している限り、存在してはいけません/最初に作成されるべきではありません。 – Wrikken