Java 防止未经授权访问servlet定义的web服务

Java 防止未经授权访问servlet定义的web服务,java,servlets,authorization,Java,Servlets,Authorization,我想防止未经授权的黑客/窃取公共网站的servlet提供的web服务。如何确保servlet仅由访问站点上特定url的访问者调用 具体来说,我有两个servlet,它们一起生成一个包含自定义图像的html页面。图像参数由jsp和servlet1之间的交互设置。然后,这些图像参数从jsp中的img标记中发送到servlet2 我已经在下面列出了代码的相关部分,但我的问题是: 我可以在下面的servlet2 doGet()中添加什么来确保servlet2 doGet()仅为 如果我的网站的访问者从m

我想防止未经授权的黑客/窃取公共网站的servlet提供的web服务。如何确保servlet仅由访问站点上特定url的访问者调用

具体来说,我有两个servlet,它们一起生成一个包含自定义图像的html页面。图像参数由jsp和servlet1之间的交互设置。然后,这些图像参数从jsp中的img标记中发送到servlet2

我已经在下面列出了代码的相关部分,但我的问题是:

  • 我可以在下面的servlet2 doGet()中添加什么来确保servlet2 doGet()仅为
    如果我的网站的访问者从my.jsp调用它,是否运行
  • 我可以对jstl或下面my.jsp的其他部分做些什么来保护
    针对未经授权的servlet2呼叫
  • 我还可以做些什么来防止对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>  
    
    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());  
    

    需要两个servlet的系统,以便生成的图像可以嵌入html页面中的img标记中。如果我只做了一个servlet,web表单将只生成一个图像,最终用户将无法继续使用web表单创建新的自定义图像版本,除非他们每次点击后退按钮

    您可以检查历史记录是否包含jsp,但我认为您需要的是如何防止跨站点脚本请求伪造。其基本原理是在jsp中包含一个隐藏的(唯一的、一次性的)键,然后在第二个servlet中进行检查。

    这回答了我的问题+答案是肯定的。谢谢。他们(owasp)在github上有一个库来处理这个问题。看一看,我没有看到一个很好的简单代码示例,尽管在测试中有一个web应用程序可能会用作示例。