original_filename
中的ActionDispatch::Http::UploadedFile
方法是否可以安全地用作在主机系统中保存为文件,而无需进一步清理它?
答案 0 :(得分:1)
查看源代码,它看起来不像是对文件名进行任何检查,所以除非他们在其他地方执行(这将是糟糕的设计,因此与Rails团队不同),真正的问题是:有什么危害文件名可以吗?我能想到的唯一可能恶意使用它的案例是:
请注意,这些都不应该是的问题。操作系统试图让它无法创建。文件,但我已经看到它完成了。并且由于(大多数?)文件系统已经有最大文件名限制,它们应该只是为您错误或截断文件;截断自己是一种边缘偏执的措施,以防止将来可能在操作系统的API代码中发现的缓冲区溢出漏洞。这种利用很可能不存在。
所以,如果你真的想,只要检查这两种情况,你应该没问题。您可能希望通过继承UploadedFile类并添加其名称为“。”的功能来实现此目的。或“..”,那么你只需给它一个随机的名字;如果它结束了,说100个字符,然后截断它。
但我要说的是,这些都不足以保证在您的代码库中引入非标准类。我只是尝试按给定名称保存文件,并依赖于底层文件保存API来捕获错误,检查所述错误,并将它们报告给用户。