在tomcat服务器上设置随机数

问题描述 投票:0回答:1

[在开始之前,请原谅我对安全的了解。我已经用谷歌搜索了一个解决方案,但是我不太了解可以应用哪种解决方案。我有一个应用程序可以调用我的tomcat服务器(它提供JasperReport报告)。调用类似于:

http://example.com/ReportServlet?report_id=123&param1=a&param2=b

如果您调用此方法,则servlet将返回报告。我的问题是,只要您继续进行此调用,无论调用多少次,它都将返回报告。我想要的是仅在您单击应用程序内的“运行报告”按钮时才能运行该报告。因此,如果您在浏览器中运行该网址,则该网址将无法正常运行。我当时正在考虑使用某种随机数,即单击该按钮时,它会生成,并且只能用于一次调用报告。现在,我有一个解决方案,单击该按钮时会生成一个随机字符串,并将其插入数据库中,并将此字符串作为参数传递给url(http://example.com/ReportServlet?report_id=123&param1=a&param2=b&nonce=somesha256,servlet读取此参数并与数据库进行检查,如果它是有效的,它标记字符串不再有效。这不是一个干净的解决方案,我想知道tomcat(甚至JasperReports)是否具有类似于nonce的解决方案?

tomcat jasper-reports tomcat8
1个回答
1
投票

我想知道tomcat(甚至JasperReports)是否具有类似于随机数的解决方案?

Tomcat:否

JasperReports:我不知道。我不希望它有这个功能,因为它的境界不同于限制访问某些东西。 (如果我错了,请纠正我,在问题中添加jasper-reports标签)

不过,您可以在应用程序中轻松实现此功能,例如作为servlet过滤器,它检查您决定使用的随机数:如果存在随机数:检查其有效性,然后继续处理常规请求,否则仅返回一条错误消息。

这通常要求您将有效的随机数(可能对其报告和/或其参数也有效)存储在某些存储(通常是数据库)中,并在下载或超时时删除/标记使用的随机数。

我几乎希望验证方面(例如ServletFilter)与分配非随机URL所需的其他管理工作相比是微不足道的,但这不是您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.