2

公開 Web サイトの一部であるサーブレットによって提供される Web サービスの無許可のハッキング/盗用を防止したいと考えています。サイトの特定の URL への訪問者のみがサーブレットを呼び出すようにするにはどうすればよいですか?

具体的には、カスタマイズされた画像を含む html ページを一緒に生成する 2 つのサーブレットがあります。画像パラメータは、jsp と servlet1 の間の対話によって設定されます。そして、これらの画像パラメーターは、jsp の img タグ内から、jsp から servlet2 に送信されます。

以下にコードの関連セクションを含めましたが、私の質問は次のとおりです。


  1. Web サイトへの訪問者が my.jsp から呼び出した場合に のみ servlet2 doGet() が実行されるようにするには、以下の servlet2 doGet() に何を追加すればよいですか?

  2. servlet2 への不正な呼び出しから 保護するために、jstl または以下の my.jsp の他の部分に対して何かできることはありますか?
  3. 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 フォームを使用して新しいカスタム バージョンの画像を作成することはできません。

4

1 に答える 1

1

履歴にjspが含まれていることを確認できますが、クロスサイトスクリプティングのリクエスト偽造を防ぐ方法が求められていると思いますhttps://www.owasp.org/index.php/Top_10_2013-A8-Cross-Site_Request_Forgery_(CSRF )。その基本は、2 番目のサーブレットで確認する jsp に非表示の (一意の 1 回限りの) キーを含めることです。

于 2013-08-21T06:11:19.877 に答える