5

我正在尝试决定如何在我的烧瓶应用程序上实现图像上传功能。我目前正在使用 Flask-Uploads 来完成工作,它似乎工作得很好。但是,我不知道它是否非常安全,这可能是一个大问题,因为涉及文件上传。Flask-Uploads 并没有真正提供有关其服务实现的详细信息,因此我没有通过查看文档获得任何见解。但是,我在 Flask 的官方文档中看到了一个使用 Werkzeug 上传文件的示例,这似乎有一些额外的方法用于文件安全。我似乎在网上找不到任何可以说明哪个更安全的信息。

4

2 回答 2

8

Flask-Uploads实际上是使用Flask 文档中的模式进行文件上传处理。它使用werkzeug.secure_filename,它提供了一种方法来设置MAX_CONTENT_LENGTH您是否出于某种原因使用 Flask 0.5 或更早版本,并且它提供了一种基于文件扩展名验证文件的方法。

事实上,Flask 的文档实际上明确建议使用 Flask-Uploads

因为文件上传的通用模式在所有处理上传的应用程序中几乎没有变化,所以有一个名为 Flask-Uploads 的 Flask 扩展,它实现了一个完整的上传机制,包括扩展的白名单和黑名单等等。

于 2014-10-28T12:58:21.853 回答
0

UTF-8 支持

def secure_filename(filename):
    if isinstance(filename, text_type):
        from unicodedata import normalize
        filename = normalize('NFKD', filename).encode('utf-8', 'ignore')
        if not PY2:
            filename = filename.decode('utf-8')
    for sep in os.path.sep, os.path.altsep:
        if sep:
            filename = filename.replace(sep, ' ')
    filename = str(_filename_gbk_strip_re.sub('', '_'.join(
        filename.split()))).strip('._')

    if os.name == 'nt' and filename and \
       filename.split('.')[0].upper() in _windows_device_files:
        filename = '_' + filename
    return filename

于 2022-01-28T19:22:37.020 回答