php - 尽管在 .htaccess 中使用了“ForceType image/jpeg”,但 PHP 文件仍在执行
问题描述
为了防止任何 PHP 文件在上传到我的图像目录时执行,我创建了一个.htaccess
仅包含 的文件ForceType image/jpeg
,放置在此目录中。
虽然这成功导致evil.txt
在浏览器打开时被解释为图像文件,但evil.php
执行得很好(它将文本回显到浏览器)。我什至尝试过直接针对它:
<FilesMatch "evil.php">
ForceType image/jpeg
</FilesMatch>
但这也不起作用。
解决方案
这是完全不相关的两件事。ForceType
用于客户端,而不是 Web 服务器。解释 PHP 的是你的 apache httpd web 服务器。它知道是否将文件解释为 PHP 的方式取决于您的FilesMatch
指令,其中包含 aSetHandler
让 httpd 知道让这些文件转到mod_php
. 这两件事是完全不相关的。
换句话说,您可能正在(非常聪明地)认为您正在做的事情将使您的 apache httpd 配置更加安全。我向你保证,你不是。在该配置方案中,不以结尾的文件.php
不会通过 php。而且由于您可以控制在您的 webroot 中命名哪些文件,所以这不应该是一个问题。只是不允许用户控制服务器上文件的命名。就是这么简单
推荐阅读
- spring - Spring Security OAuth2:“#oauth2.xxx”表达式未使用映射到同一 FilterChain 的多个 RequestMatchers 进行评估
- kotlin - btn.setOnClickListener() 怎么调用
- python - 如何根据 Python 中回归的 theta 在散点图上绘制一条线?
- node.js - Node.js Mongodb 文档值类型是 BSON LONG 如何获得准确的值?
- asp.net - 如何混淆 ASPX 文件中的内联 C# 代码?
- c++ - Skybox 纹理不与 OpenGL 一起显示?
- java - 如何使用等待线的监视器实现简单的线程同步
- ios - 需要一些关于核心数据的知识 - NSManagedObject 用法
- sql - SQL 中的 CASE 和 CONCAT
- python - Dash - 上传 CSV 并呈现图表