在Java中,使用Glassfish Server时,我们只能保存与我们的Web应用程序根相关的文件。因此,你不能直接保存文件,例如c:\program files\abc.txt
,而用PHP这是工作。它有效吗?一个人不应该能够在Web应用程序根目录之外的硬盘上引用任何位置(除非您正在使用虚拟目录)。为什么有这么矛盾的原则?在磁盘上保存文件
Q
在磁盘上保存文件
1
A
回答
2
这是Glassfish的一项安全功能(通过JVM的安全功能)。如果你真的想要,你可以禁用它,但想法是,即使你的Web应用程序中存在一些令人讨厌的安全漏洞,如果它可以被停止,那么它不应该危害到盒子的其余部分。
我不知道PHP是否有这样的功能 - Web应用程序容器可以合理轻松地完成此操作(以及类似的操作),这是因为Java和安全管理器的其他沙盒可用。
1
PHP比Java EE容器早。它可以让你摆脱很多,在新的,不太“信任”的系统中你不能逃避。
2
实际上,任何已部署的应用程序都不能在其范围之外进行修改,因为这可能会导致恶意(或错误)应用程序搞乱托管服务器。话虽如此,它也取决于应用服务器,有些服务器可能比其他服务器更严格。我知道Tomcat允许我直接写入C驱动器,而如果我这样做的话,Websphere服务器会对我咆哮(尽管必须有一个选项可以关闭它)。
1
PHP有两个这样的安全功能。默认情况下都不启用。
open_basedir
是一种配置设置,将文件操作限制为指定的目录树。要匹配Glassfish的配置方式,应该将其设置为Web服务器配置中的文档根目录(如果您使用Apache,则使用php_admin_value
)。它将文件操作限制为运行PHP的用户所拥有的文件操作......很可能是Web服务器使用的帐户。
相关问题
- 1. Carrierwave不保存磁盘上的文件
- 2. 将PDF文件保存在磁盘中
- 3. 将文件保存在磁盘中
- 4. 将上传的文件保存在磁盘上,ubuntu路径
- 5. 保存附件文件在磁盘上得到失败
- 6. 在磁盘或MongoDB上存储文件
- 7. UWP将zip文件保存到磁盘
- 8. 提示将文件保存到磁盘
- 9. 下载并保存文件到磁盘
- 10. HTML5文件系统 - 保存磁盘上的文件
- 11. Chrome的DevTools:SASS源文件不会被保存在磁盘上
- 12. git add -A将删除的文件保存在磁盘上?
- 13. 发送保存在磁盘上的eml文件
- 14. 回形针,在保存在磁盘上的文件之前保存记录
- 15. Couchbase - 将文档保存在内存和磁盘上的顺序
- 16. Chrome扩展程序:如何将文件保存到磁盘上
- 17. Tomcat AccessLogValve永久保存磁盘上的所有文件?
- 18. Django:上传文件并保存到磁盘
- 19. HTML5文件上传,不保存到磁盘
- 20. 保存并读取磁盘上的文件
- 21. 列表保存到磁盘上
- 22. 在内存中创建FileStream而不是在磁盘上保存物理文件
- 23. APK文件磁盘上不
- 24. 在磁盘上写上传的文件
- 25. 将trie保存到磁盘
- 26. MySql不保存到磁盘
- 27. 将nsdate保存到磁盘
- 28. 将DynamicMethod保存到磁盘
- 29. Mongoengine FileField保存到磁盘?
- 30. UIManagedDocument不保存到磁盘
在实际部署中,操作系统应至少对服务器进程施加安全限制(至少这是为什么我们不尝试以root身份运行这些进程的原因)。不会阻止恶意应用程序在容器过程中损害其他应用程序(如Tomcat),但它至少应该保护服务器本身。 – Curtis 2010-07-06 15:45:46