5

さて、このような単純なサーブレットがあります。

public class SimpleServlet extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
    resp.setContentType("text/plain");
    resp.getWriter().println(req.getParameter("name"));

    }
}

この URL /simple_servlet.do を使用するとトリガーされるとしましょう

このサーブレットが他の Web サイトからではなく、自分の Web サイトから呼び出された場合にのみ機能するようにするにはどうすればよいですか。言い換えれば、私に知らせてくれるリクエストパラメータ(スプーフィングできない)があります。

4

3 に答える 3

6

私が考えることができる唯一の方法は、サーバー上でWebサイトからトークン(たとえば、JSESSIONID上のMD5)を生成し、そのトークンをサーブレットに返すことです。あなたのウェブサイトだけがトークンを知っており、他のウェブサイトはクッキー(JSESSIONIDを含む)を盗んで外部からトークンを計算することはできません。これは、 XSRF攻撃からも安全である必要があります。

于 2013-01-04T06:21:14.847 に答える
1

クライアントとサーバー間のセッションを使用して、初回かどうかを検出できます。

if (req.getSession(false) == null) { // false = do not create a session
   // No user session
}
于 2013-01-04T06:21:46.417 に答える
0

以下の方法で簡単に防ぐことができます。

  1. POSTハッキングがより困難なため、メソッドを使用します。GET と POST の違い
  2. ブラウザにURLを入力すると直接送信できるGETメソッドを無視
  3. リクエストを処理する前に、認証ユーザー名、パスワードを確認してください
  4. 承認書の作成を検討するFilter
于 2013-01-04T06:34:22.847 に答える