2013-10-16 42 views
2

所以这里的设置:内容处置安全

我有一个Flask-WTF的简单Flask应用程序。

用户提交带有一个文本字段的表单 - filename

的形式具有CSRF令牌(从烧瓶WTF。)

如果用户提交表单和验证,则该浏览器下载一个自动生成文件(即,不是从服务器文件系统文件)的文件名提交。

重要的代码是:

response.headers['Content-Disposition'] = 'attachment; filename={0}.lsc'.format(filename) 

安全性如何呢?

换句话说,如果恶意用户可以在Content-Disposition头中插入任意文本,可能会做什么?

+0

你是什么意思的自动生成的文件?文件从哪里来? –

+0

它根据要求生成。即它采用模板,并从会话中插入数据,然后将其作为下载文件进行流式传输。注意,文件名变量不在模板中使用。实际上它只用于提供的代码行中。 – korylprince

+0

我会检查服务器端语言不容易被头注入(例如,如果'filename'包含新的行字符)。 – SilverlightFox

回答

1

他们将不能够做任何事情到服务器,如果他们实施RFC 2616正常应该是在客户端安全:

接收用户代理应该不尊重其他的目录路径 信息出现在filename-parm参数中,这是目前认为适用于HTTP实现的唯一的参数 。 文件名应该只被视为一个终端组件。

但是,要充分考虑此问题,请参阅RFC 2183: Communicating Presentation Information in Internet Messages: The Content-Disposition Header Field,特别是安全考虑事项部分。 (RFC 2183适用于邮件消息,但同样适用于HTTP用户代理。)

+0

谢谢。这正是我需要的。 – korylprince