报表查看器控件的文件导出函数在其url中使用会话id,如下所示:
http://website/Reserved.ReportViewerWebControl.axd?ReportSession=sessionidXXXXXXXXX&Culture=2057&CultureOverrides=True&UICulture=2057&UICultureOverrides=True&ReportStack=1&ControlID=2c3de8dad69842d7bed6bd7b755784bb&OpType=Export&FileName=FileNameToExport&ContentDisposition=OnlyHtmlInline&Format=CSV
用户点击上面的Export -> required file format -> file downloaded -> the link
为下载的文件。
请看下面的图片
http://s23.postimg.org/8yb71b7dn/Untitled.png我想知道会话id是否会暴露安全风险。如果是,是否可以从url中删除会话id,或者有更安全的方式允许下载。
请注意,这是报告服务客户端,它从web表单向报告服务发送请求。
我尝试将UseSessionCookies
设置为false,但仍然不工作。
我认为这是指哪个sessionID, SSRS sessionID或asp.net sessionID有些混乱。根据本文档,在URL中使用asp.net sessionId存在潜在的安全风险:
在服务器和浏览器之间以clear方式发送SessionID文本,要么在cookie中,要么在URL中。结果,一个不受欢迎的源可以通过获取另一个用户的会话访问权限SessionID值,并将其包含在对服务器的请求中。如果你是否在会话状态中存储私有或敏感信息建议您使用SSL加密系统之间的任何通信包含SessionID的浏览器和服务器。
最常见的替代方法是通过启用cookie将sessionId排除在URL之外。您可以使用sessionstate元素的isCookieless方法检查是否启用了cookie,并使用cookieless属性对其进行设置。
然而,在我看来,这是一个报告服务会话Id,因为asp.net会话Id是一个20个字符的字符串,是这样引用的:(S (4 danlfat035muve4g0mvgfrr))
然而,Reporting services会话id是以您在url中列出的sessionID=x的方式引用的,并且基本上用于避免每次对报告进行小更改或进行导出时重新呈现报告。您应该能够安全地删除sessionID,报告服务将简单地创建一个新会话并重新呈现报告。这将对资源造成更大的压力。关于SSRS会议的更多信息