首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保护BIRT报告

保护BIRT报告
EN

Stack Overflow用户
提问于 2014-01-31 05:01:53
回答 2查看 1.8K关注 0票数 1

我可以阻止用户从我创建的网站打开BIRT报告。但是,考虑到报表的链接仍然在浏览器的历史记录中,这台计算机上的任何用户仍然能够通过调用历史链接来打开报表。

用户关闭报表后,如何防止BIRT报表的链接停留在浏览器中?所以打开报告的唯一方法就是从网站上。

或者有人有其他更好的方法来达到同样的目标?就像在BIRT中显示用户名和密码一样,在用户可以使用报表参数之前?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-01 10:36:35

使用密码参数的最简单方法。

代码语言:javascript
复制
select <feilds>


Where 'password' = ?

使用文本框参数,当用户运行报表时,他们会在文本框中输入“密码”,或者SQL不返回结果。

SQL不区分大小写,所以您的密码不会区分大小写。而且,这是一个非常低的安全措施。只有防止随意进入才是适当的。

JavaScript是区分大小写的,所以您可以编写一些东西(比如查询上的过滤器),在其中您的Pa$$worD位于一个JavaScrip变量中,并与之进行大小写敏感性比较。

开源伯尔特并不打算提供对数据的“安全”访问。如果您必须提供数据的真正安全性,则需要在客户端访问BIRT之前执行该操作。

票数 1
EN

Stack Overflow用户

发布于 2014-02-03 09:26:55

除非使用https对整个会话进行加密,否则让用户在浏览器中输入密码并按照James的建议将其提交给服务器是一种安全风险。

简单的回答是:不要直接使用BIRT servlet。

您可以使用商业iHub,它可能有用于用户访问控制的基础设施。

如果使用开源BIRT,则在服务器端作为文件(或OutputStream)生成BIRT报告,然后将该文件返回给在应用程序控制下的客户端。

欲知更多细节,请在互联网上搜索“整合BIRT”。

如果您的应用程序不是用Java编写的,或者您没有足够的控制/知识直接在应用程序中完成,您可以使用“一次性令牌”方法,如下所示:

在申请中,

  • 生成一个随机和唯一的令牌(它不能通过知道其他令牌来预测)
  • 将BIRT报告生成为文件(例如,PDF),其中文件名包含令牌。
  • 向用户返回一个“下载链接”,该链接链接到一个简单的servlet (见下面),将令牌作为URL的一部分(例如,?token=xxxx)

servlet:

  • 检查URL中是否提供了令牌
  • 检查是否存在具有与令牌匹配的文件名的PDF文件。
  • 如果文件存在,请将其返回到HTTP主体中的客户端,然后删除它。

这样,令牌就会被使用一次密钥:如果您知道令牌,就可以下载一次BIRT报告。所有这些都是直接从浏览器中完成的,并且令牌被消耗掉了,因此之后就没有用了。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21472724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档