# 上传目录：只允许当静态文件读，禁止任何形式的脚本执行
# 即使扩展名白名单被绕过（改了后缀、双后缀、Unicode 变体），
# 这里也保证上传的东西不会被服务器当成代码跑起来。
<IfModule mod_mime.c>
  RemoveHandler .php .phtml .php3 .php4 .php5 .php7 .php8 .phps .phar .cgi .pl .py .rb .asp .aspx .jsp .sh
  RemoveType .php .phtml .phps .phar .cgi .pl .py .rb
</IfModule>
<IfModule mod_php.c>
  php_flag engine off
</IfModule>
<IfModule mod_php7.c>
  php_flag engine off
</IfModule>
<IfModule mod_php8.c>
  php_flag engine off
</IfModule>
<FilesMatch "(?i)\.(php|phtml|php[0-9]|phps|phar|inc|pl|py|rb|cgi|asp|aspx|jsp|sh|exe|htaccess)$">
  <IfModule mod_authz_core.c>
    Require all denied
  </IfModule>
  <IfModule !mod_authz_core.c>
    Order allow,deny
    Deny from all
  </IfModule>
</FilesMatch>
# 禁止浏览器对上传内容做「猜类型」渲染。
# 注意：这里不能强制 Content-Disposition: attachment，
# 否则 <img src="上传的svg"> 这类正常引用会变成下载而无法显示；
# SVG 的脚本风险已由 Core\Security::sanitizeSvg() 在入库时清除。
<FilesMatch "(?i)\.(svg|html?|xml)$">
  Header set X-Content-Type-Options "nosniff"
</FilesMatch>
