次のサーブレットを作成しました。入力を大文字に変換します。
public class TestServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
InputStream in=req.getInputStream();
OutputStream out=resp.getOutputStream();
byte array[]=new byte[1024];
int nReads;
while((nReads=in.read(array))!=-1)
{
for(int i=0;i<nReads;++i)
{
array[i]=(byte)Character.toUpperCase(array[i]);
}
out.write(array, 0, nReads);
}
out.flush();
out.close();
}
}
それはうまくいきます:
echo "aaaaaaaaaaaaaaaaaaaaaaaaaaa" |\
curl -d @- "http://localhost:8080/app/test"
AAAAAAAAAAAAAAAAAAAAAAAAAAAl
そのようなサーブレットをデプロイしても安全ですか? この種のサーブレットの落とし穴は何ですか? たとえば、ユーザーがサーブレットのインスタンスを永久にブロックするのを防ぐにはどうすればよいですか。
cat | curl -d @- "http://localhost:8080/app/test/x"