我可以阻止用户从我创建的网站打开BIRT报告。但是,考虑到报表的链接仍然在浏览器的历史记录中,这台计算机上的任何用户仍然能够通过调用历史链接来打开报表。
用户关闭报表后,如何防止BIRT报表的链接停留在浏览器中?所以打开报告的唯一方法就是从网站上。
或者有人有其他更好的方法来达到同样的目标?就像在BIRT中显示用户名和密码一样,在用户可以使用报表参数之前?
发布于 2014-02-01 10:36:35
使用密码参数的最简单方法。
select <feilds>
Where 'password' = ?使用文本框参数,当用户运行报表时,他们会在文本框中输入“密码”,或者SQL不返回结果。
SQL不区分大小写,所以您的密码不会区分大小写。而且,这是一个非常低的安全措施。只有防止随意进入才是适当的。
JavaScript是区分大小写的,所以您可以编写一些东西(比如查询上的过滤器),在其中您的Pa$$worD位于一个JavaScrip变量中,并与之进行大小写敏感性比较。
开源伯尔特并不打算提供对数据的“安全”访问。如果您必须提供数据的真正安全性,则需要在客户端访问BIRT之前执行该操作。
发布于 2014-02-03 09:26:55
除非使用https对整个会话进行加密,否则让用户在浏览器中输入密码并按照James的建议将其提交给服务器是一种安全风险。
简单的回答是:不要直接使用BIRT servlet。
您可以使用商业iHub,它可能有用于用户访问控制的基础设施。
如果使用开源BIRT,则在服务器端作为文件(或OutputStream)生成BIRT报告,然后将该文件返回给在应用程序控制下的客户端。
欲知更多细节,请在互联网上搜索“整合BIRT”。
如果您的应用程序不是用Java编写的,或者您没有足够的控制/知识直接在应用程序中完成,您可以使用“一次性令牌”方法,如下所示:
在申请中,
servlet:
这样,令牌就会被使用一次密钥:如果您知道令牌,就可以下载一次BIRT报告。所有这些都是直接从浏览器中完成的,并且令牌被消耗掉了,因此之后就没有用了。
https://stackoverflow.com/questions/21472724
复制相似问题