所以这是设置:
我有一个Flask-WTF的简单Flask应用程序。
用户提交一个包含一个文本字段的表单 - filename
。
表单有一个CSRF令牌(来自Flask-WTF。)
如果用户提交表单并进行验证,则浏览器会下载自动生成的文件(即不是服务器文件系统中的文件),并提交文件名。
重要的代码是:
response.headers['Content-Disposition'] = 'attachment; filename={0}.lsc'.format(filename)
这有多安全?
换句话说,如果恶意用户可以在Content-Disposition
标题中插入任意文本,他们可能会做些什么?
答案 0 :(得分:1)
他们无法对服务器做任何事情,如果他们正确实施RFC 2616,它在客户端应该是安全的:
接收用户代理不应该尊重任何目录路径 filename-parm参数中存在的信息,这是唯一的 目前认为适用于HTTP实现的参数。该 filename应该只被视为终端组件。
但是,要充分考虑此问题,请参阅RFC 2183: Communicating Presentation Information in Internet Messages: The Content-Disposition Header Field,特别是“安全注意事项”部分。 (RFC 2183适用于邮件消息,但同样适用于HTTP用户代理。)