私はサーブレットと JSP の世界を探求し始めており、ログイン システムの作成に成功しました。しかし、その実装は私が例外としていたほど完璧ではありません。
シナリオ:
1> ユーザーは、index.jsp にユーザー名とパスワードを入力します。
2> リクエストがサーブレット (login.login.java) に送信されます
3> サーブレットはデータベースに接続し、ユーザーが有効かどうかを確認します。(LoginBean.java 、LoginDB.java および GetConnection.java を使用、つまり Bean クラス、Database QueryClass および DB 接続クラス resp を使用)
4> ユーザーが認証された場合、
5> ユーザーは home.jsp にリダイレクトされます
そうしないと
Error.jsp (これは、いくつかのメッセージが追加された index.jsp の単なるレプリカです)
問題:
1> ブラウザで index.jsp を開き、URL を home.jsp に変更すると、サーブレットをバイパスできます。
2> MD5、つまり PASSWORD('mypass') を使用して mysql にパスワードを保存しようとすると、認証されません。
これは私のdoPOSTメソッドです
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String user = request.getParameter("user");
String pass = request.getParameter("pass");
LoginBean bean = new LoginBean();
bean.SetUser(user);
bean.SetPass(pass);
bean = LoginDB.check_login(bean);
if (bean.isValid()) {
HttpSession session = request.getSession(true);
session.setAttribute("currentSessionUser", user);
response.sendRedirect("home.jsp");
} else {
response.sendRedirect("Error.jsp");
}
}
I tired to Modify my Home.jsp and check for a valid session before loading the page. Using the Following
<%
if(!session.isNew())
{
response.sendRedirect("index.jsp");
}
%>
これにより、URL スニッフィングが修正されますが、有効なユーザーが home.jsp にリダイレクトされなくなります。
アップデート:
JB Nizet が提案したように、これにフィルターを実装しようとしています。しかし、私が言ったように、私は学習者なので、これを達成する方法についてはよくわかりません:
doFilter メソッドで何をする必要がありますか?
ServletRequest オブジェクトを HttpRequest オブジェクトに変換しました
使用して
HttpServletRequest req = (HttpServletRequest) リクエスト;
このreqオブジェクトを使用して、ユーザーが実際にsumbitボタンをクリックしたり、サーブレットをバイパスするためにURLを直接変更したりするにはどうすればよいですか?
申し訳ありませんが、これは非常に初歩的であるに違いありませんが、私はこれについて何時間も頭を悩ませています。私を助けてください
よろしく
Genocide_Hoax