为什么 PHP 中的 TinyMCE 服务器端处理程序示例包含文件扩展名检查,如果您无论如何都不能 select 非图像?

Why does the TinyMCE server-side handler example in PHP include a file extension check if you can't select a non-image anyway?

有意思。

我想添加逻辑来捕获非图像的上传。在文档的 PHP 示例中,他们有这个:

// Verify extension    
if (!in_array(strtolower(pathinfo($temp['name'], PATHINFO_EXTENSION)), array("gif", "jpg", "png"))) {
  header("HTTP/1.1 400 Invalid extension.");
  return;
}

所以我在服务器的后台服务器端添加了类似的东西 JavaScript。

但事实证明没有必要。图片上传对话框(浏览或拖放)不知何故不会让你 select 除了图片之外的任何东西。

如果是这样,为什么示例将其添加到处理程序中?

有几个原因,但我会坚持主要的 2:

  1. 您可能不想接受所有图片类型,也许您不希望用户上传.gif 文件,因为在内容中看到gif 图片会很难看,或者您的服务器可能不支持这种类型图片。
  2. 使用 curl 等终端命令或 Postman 等 GUI 应用程序,您可以跳过正常的浏览器上传工作流程,将您喜欢的任何内容上传到服务器。非常危险,因为如果您不执行某种验证,用户可以上传任何内容,例如,他们可以上传 .php 文件并造成各种破坏。