Tomcat CSRF保護ファイルのドキュメントを読みましたが、セキュリティ機能を実行しないページである必要があります。Javaでセッション無効化されたTomcat CSRF保護フィルタの使用方法
私は、エントリポイントのいずれかが現在のセッションのノンスの一部であることを理解します。
しかし、OWASPのトップ10の推奨事項に従って、私はユーザーがログインして新しいセッションを生成するときにセッションを無効にしています。
私が見つけた問題は、ユーザーが、一度ログインしただけで利用可能なリンクをクリックすると、エントリポイントの一部を形成しないパスワードの変更などです。403が返されます新しいセッションに
最初にエントリポイントのURLの1つをクリックすると、新しいノンスが作成され、パスワードの変更リンクがこれでカバーされるため、パスワードの変更リンクをクリックしてページにアクセスできますウェルカムページには、ユーザーが使用する必要のある他のリンクがあります。バックボタンを使用してリンクをクリックすることはできません。ノンセは同じではありません。
私の質問は、新しいセッションが作成されたときに、最初にエントリポイントのURLの1つをクリックしなければパスワード変更ページにアクセスできないという事実をどう扱うかです。
私はURLのエンコードを見てきましたが、私のコードは正しく処理されていない可能性があります。これでURLをエンコードする
誰かが最善を尽くすものとして、アドバイスやオプションを提供できます。
もし私が私のコントローラサーブレットのログインセクションを含むのに役立つのであれば、ログインフォームのポストメソッドで到達します。
public class UserController extends HttpServlet {
final static Logger log = LogManager.getLogger(UserController.class);
@Override
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
String requestURI = request.getRequestURI();
String url = "";
// Register a new user
if (requestURI.endsWith("/subscribeToSite")) {
url = subscribeToSite(request, response);
}
// Login
if(requestURI.endsWith("/logInToSite")){
url = logInToSite(request, response);
}
//try to login
User user = UserDB.loginUser(mPNum, upwd);
if(user==null){
url = "/loginerror.jsp";
}else{
HttpSession session = request.getSession();
session.invalidate();
session=request.getSession(true);
session.setAttribute("loggedUsrID", user.getUserID());
session.setAttribute("loggedUsrFName", user.getFName());
url="/schedule/welcome.jsp";
}
return url;
}//EO user login
いずれかのアイデアがありますか? – Graham
OK私はすべての要求を転送してい https://stackoverflow.com/questions/36530341/not-able-to-authenticate-post-request-for-csrf-token-with-tomcat しかし、追加していますディスパッチャは問題を解決しませんが、これを動作させる唯一の方法はセッションを無効にしないことです。 – Graham