1

ユーザーがのログインページにアクセスするPortalと(..の可能性がLiferayありJboss Portalます)、 JSESSIONID cookieが作成されますcontainer。ログインページにクレデンシャルを入力すると、同じことJSESSIONIDが引き継がれます。

ここで、エンドユーザーは、認証を受ける前に(ログインページでJSESSIONIDをチェックすることにより)知るようになります。 これにより、認証される前にJSESSIONIDサイトを知ることができるため、ハッキングに対するサイトの脆弱性が高まります。JSESSIONID

この投稿JSESSIONIDは、認証後に別のものを使用するようにアドバイスしています。

したがって、新しいJSESSIONDの作成は、使用されPortalているサーバー(使用中Liferay CE 6.0)によって実現できますか、それともWebアプリケーション開発者が処理する必要がありますか?Webアプリケーション開発者が処理する必要がある場合、最善の方法は何ですか? request.getSession(true)唯一のオプションは?? 認証後Liferayに新しいものを作成するように指示する必要がある場合、どのように行うことができますか?JSESSIONID

4

5 に答える 5

1

これは、ずっと前にLiferay5.2.5で解決したセッション固定問題によく似ています。このソリューションは、新しいセッションIDを強制するカスタムTomcatバルブを作成することで構成されています。したがって、このソリューションはLiferayに固有のものではなく、Tomcatを使用するかどうかによって異なります。

古いソリューションを新しいLiferay/Tomcatの組み合わせに適応させるのはそれほど難しいことではないと思います。私のソリューションに関する必要な情報は、私の古いブログと現在メンテナンスされていないブログで見つけることができます(時間があれば...):Liferayでのセッション固定の修正

于 2012-10-08T08:59:24.083 に答える
1

ここでの問題は、ユーザーがセッションIDを知っていることではありません(ユーザーは常にそれを知っており、ブラウザーによって送信されます)。攻撃シナリオでは、ユーザーがログアウトしているときに、すでにJSESSIONIDが埋め込まれているリンクをクリックしてから認証すると、このセッションがログインセッションになります。これで、最初にリンクを作成した人が同じセッションを使用してユーザーとして機能できるようになります。詳細については、https://en.wikipedia.org/wiki/Session_fixationをご覧ください。

そうです、ユーザーが認証した後、Webサーバーまたはアプリサーバーを使用してセッションIDをリセットします。自分で書く必要はありません。Tomcat 7の場合:http://www.tomcatexpert.com/blog/2011/04/25/session-fixation-protection

于 2012-10-08T10:49:44.637 に答える
1

Liferayのデフォルトのように、次のプロパティをtrueに設定することで、この問題を修正できます。

#
# Set this to true to invalidate the session when a user logs into the
# portal. This helps prevents phishing. Set this to false if you need the
# guest user and the authenticated user to have the same session.
#
# Set this to false if the property "company.security.auth.requires.https"
# is set to true and you want to maintain the same credentials across HTTP
# and HTTPS sessions.
#
session.enable.phishing.protection=true
于 2012-10-08T18:13:29.713 に答える
0

@チアゴ:

これsession.enable.phishing.protection=trueは、デフォルトで。に当てはまりますportal.properties。とにかく、私はこのエントリをに追加しましたportal-ext.properties。ただし、それでもJSESSIONIDログインの前後で同じままです。

私はこのリンクfilterに従ってを実装しました。このフィルターを実装した後、Liferayのログインページを押すと、作成されます。クレデンシャルを入力してログインした後も、同じものが保持されます。JSESSIONIDJSESSIONID

私はこれをに実装しfilterましたServletが、私のPortletsまたはLiferayのROOTアプリケーションには実装していません。MyServletはLR+JbossASバンドルでデプロイされます。最初にを押してServlet、ここからLiferayのログインページにリダイレクトするリンクがあります。Cookieが有効になっているかどうかがわからないため、Containerが初めてリクエストを追加するためfilter、これを実装しました。が追加されているため、で画像を取得できません(urlがmyImage.jpg; jsessionid =であるため)。したがって、私はこれを実装しました。ServletJSESSIONIDJSESSIONIDServletfilter

これfilterはLiferayの構成と競合していますか?session.enable.phishing.protection=true同じ設定JSESSIONIDが保持された後でも、他に何が問題になる可能性がありますか?

于 2012-10-09T04:58:05.073 に答える
0

このコードを。内に配置しportal-ext.propertiesます。

問題が修正され、ログインするたびに新しいセッションIDが生成されます。

session.enable.phishing.protection=true
com.liferay.util.servlet.SessionParameters=true
于 2014-07-31T07:27:42.940 に答える