|
|
1
16
所有的答案都集中在验证文件上。这几乎是不可能的。 Django开发人员不会要求您验证是否可以执行文件 作为 CGI文件。他们只是告诉你不要把它们放在 将 被处决。 你应该把所有的django资料放在一个特别的django目录中。django代码目录不应包含静态内容。 不要将用户文件放在Django源存储库中。 如果您使用的是Apache2,请查看基本的CGI教程: http://httpd.apache.org/docs/2.0/howto/cgi.html
Apache2可能被设置为运行
Apache2可以设置为服务器CGI文件,具体取决于
但是,你确实需要 清理用户提交的文件,以便在其他客户端的计算机上安全运行 . 提交的HTML对其他用户不安全。 它不会伤害你的服务器。你的服务器只会向任何请求它的人吐回它。买一个HTML消毒剂。 也, SVG可能不安全 . 它以前有臭虫。SVG是一个包含JavaScript的XML文档,因此它可能是恶意的。 PDF是…很棘手。您可以将其转换为图像(如果您真的需要),或者提供图像预览(并让用户自行承担下载风险),但对于试图使用它的人来说,这将是一种痛苦。 考虑一个白名单的文件是可以的。 嵌入在gif、jpeg或png文件中的病毒看起来就像损坏的图片(或无法显示)。如果你想偏执,可以使用pil将它们全部转换为标准格式(嘿,你也可以检查大小)。经过消毒的HTML应该是可以的(去掉脚本标记并不是什么高深的科学)。如果消毒是一个糟糕的循环(或者你只是很谨慎),我想你可以把它放在一个单独的服务器上。 |
|
|
2
14
对于图像,您可能只能使用 Python Imaging Library (PIL)。
如果文件不是图像,则会引发异常。我对python/django非常陌生,所以其他人可能有更好的方法来验证图像。 |
|
3
6
您要对上传的内容进行的第一件事是将其存储在一个无法直接下载的目录中。如果您的应用程序存在于
第二件事,您需要确定用户上载的文件类型,然后为每个文件类型创建规则。 您不能信任基于扩展名的文件,因此请使用 Fileinfo .然后,为每个mime类型创建一个验证器。ImageMagick可以验证图像文件。为了提高安全性,您可能需要对PDF和Flash文件等文件运行病毒扫描程序。对于HTML,您可能需要考虑限制标记的子集。
我找不到与
|
|
|
4
5
这有点特定于您的托管环境,但我要做的是: 使用nginx而不是apache服务所有用户上传的内容,并将其作为静态内容(即使用户上传,也不会运行任何php或cgi) |
|
|
5
2
“可信用户”是一个主观术语。你认识的人是当面认识的还是只认识在你的应用程序上创建了帐户的人?不要让你不认识的人访问你的文件系统。 无论如何,给别人上传文件的能力有点危险,我认为应该避免。上周我在自动上传HTML代码时遇到了类似的问题,我决定将其存储在数据库中。我认为在大多数情况下,您可以使用数据库而不是文件系统。 验证的一个问题是,您必须为任何类型的文件编写一个新的验证程序。这在未来可能是一个限制,在某些情况下可能是一个大任务。 因此,我建议重新考虑基于数据库的设计。 |
|
|
6
0
您可以使用验证HTML文件 BeautifulSoup |
|
|
Wai Yan Hein · 上传时,Laravel正在旋转图像 8 年前 |
|
|
Yu.Pan · 如何上载文件夹或找到替换文件夹的方法 8 年前 |
|
|
Karma Blackshaw · 文件输入类型的未定义索引[重复] 8 年前 |
|
|
ahmed · 使用Mysql在php//中上载图像时无法打开流 8 年前 |