我完成了我的研究,但我想仔细检查:
假设我的网站上有一个类似'myfile.csv'的文件,它是从恶意来源获取的。是否可以隐藏任何类型的可执行服务器端代码?
如果是这样,我该如何防止这种情况?
答案 0 :(得分:1)
CSV文件可能不会在服务器端“执行”,而是按原样提供。您需要确保正确配置Web服务器的“处理程序”,以防止PHP(或任何其他非预期的)处理程序处理您的CSV文件。
也就是说,如果可能的话,你应该验证/清理你的应用程序的所有输入,甚至是上传的文件,例如: CSV,尤其是以后其他用户可以访问的内容时。
由于您提到了PHP,因此这里有一些指向Apache的Handler的更多信息的链接。 IIS具有类似的功能,我想大多数成熟的Web服务器都有办法以不同的方式处理不同文件扩展名的请求。 http://httpd.apache.org/docs/2.2/handler.html
如果可能的话,我建议将CSV文件存储在数据库中(或者实际上无法通过URL访问的任何地方),并通过中间PHP文件将它们按需流式传输到客户端。这是一个例子:Stream binary file from MySQL to download with PHP