本文档介绍了在 XtraReports 中使用脚本时,应该考虑的主要的安全问题。
在报表系统中启用脚本时,可能会为用户执行恶意代码,因为在脚本中几乎允许执行“任何”代码。 这意味着,举例来说,可以通过脚本修改数据库的值 (即使在应用程序代码中隐藏了登录细节),或者在与包含了运行中报表的应用程序相同的安全级别,访问本机并执行操作。 例如,为了运行应用程序,而需要充分的权限访问注册表,也意味着由用户编写并在应用程序中运行的任何脚本,也都能够访问注册表,并修改注册表值,等等。
注意,在与运行时刻生成报表相同的机器上执行所有脚本。 这意味着,例如,如果报表被嵌入到网页中,那么任何脚本都将在服务器端被处理,而不是在客户机上。
尽管恶意脚本被执行的可能性不大,但重要的是,在启用脚本时要有安全风险意识。 请确保报表系统运行的安全设置被尽可能地加以限制,并且限制允许使用脚本的用户人数。
如果需要允许执行特定的最终用户脚本 (例如,如果脚本包含不同的文件操作),那么可以把特定的 ScriptSecurityPermission 添加到由报表的 XtraReport.ScriptSecurityPermissions 属性返回的集合中。 此属性允许指定应用于报表脚本的安全许可。 每个安全许可都是 System.Security.CodeAccessPermission 类的一个子类。
要学习更多关于使用安全许可的内容,请参阅 如何: 设置最终用户脚本的安全权限 帮助文档。
注意 |
---|
即使在报表中没有使用任何脚本,但是为最终用户提供了在 最终用户设计器 中编辑报表的功能,那么报表系统就是不安全的。 这是因为高级最终用户可以把某些代码放到任何控件的 Scripts 属性中,并且在创建报表时,这些代码将被执行。 如果需要防止最终用户实现任何脚本,那么可以在最终用户设计器中隐藏 Scripts 属性 (请参阅 如何: 在属性网格中对最终用户隐藏某些属性 文档来学习如何完成此任务)。 |