公開 Web サイトの一部であるサーブレットによって提供される Web サービスの無許可のハッキング/盗用を防止したいと考えています。サイトの特定の URL への訪問者のみがサーブレットを呼び出すようにするにはどうすればよいですか?
具体的には、カスタマイズされた画像を含む html ページを一緒に生成する 2 つのサーブレットがあります。画像パラメータは、jsp と servlet1 の間の対話によって設定されます。そして、これらの画像パラメーターは、jsp の img タグ内から、jsp から servlet2 に送信されます。
以下にコードの関連セクションを含めましたが、私の質問は次のとおりです。
Web サイトへの訪問者が my.jsp から呼び出した場合に のみ servlet2 doGet() が実行されるようにするには、以下の servlet2 doGet() に何を追加すればよいですか?
servlet2 への不正な呼び出しから 保護するために、jstl または以下の my.jsp の他の部分に対して何かできることはありますか?- servlet2 への不正な呼び出しを防ぐために他に何ができますか?
私のjspは次のようになります。
<form method="post">
<img src="url-pattern-for-servlet2?a=${param.a}&b=${param.b}" />
<input type="text" name="a" value="${empty param.a ? '5' : param.a}" size="15" />
<input type="text" name="b" value="${empty param.b ? '7' : param.b}" size="15" />
<input type="submit" name="submit-button" value="click here" />
</form>
Servlet1 には doPost() メソッドがあり、エラーをチェックしてフォーム入力を処理し、jsp.forward(request,response) を呼び出して、param.a と param.b の値が取り込まれた img タグ src 属性を持つ html を返します。
Servlet2 には、次のような doGet() メソッドがあります。
String a = req.getParameter("a");
String b = req.getParameter("b");
//some code to create myBufferedImage using a and b
resp.setContentType("image/gif");//256 colors
ImageIO.write(myBufferedImage,"gif",resp.getOutputStream());
結果の画像を HTML ページ内の img タグ内に埋め込むことができるようにするには、2 つのサーブレットのシステムが必要です。サーブレットを 1 つだけ実行した場合、Web フォームは画像のみを生成し、エンド ユーザーは毎回戻るボタンを押さない限り、Web フォームを使用して新しいカスタム バージョンの画像を作成することはできません。