Supongamos que tiene una secuencia de comandos del generador de miniaturas que acepta imágenes de origen en forma de una URL. ¿Hay alguna manera de detectar si la URL fuente está "rota", ya sea inexistente o conduce a un archivo que no es de imagen?PHP ¿Detecta si el enlace de la URL de la imagen de origen conduce a una imagen "rota"?
fuerza Justo bruta usando getimagesize()
u otra función de PHP GD no es una solución, ya que podrían no ser imágenes falsificada de URL perdida en absoluto (http://example.com/malicious.exe
o el mismo archivo, pero rebautizado como http://example.com/malicious.jpg
) podría ser de entrada - tales los casos pueden ser fácilmente detectados por PHP antes de tener que invocar a GD. Estoy buscando la desinfección previa de GD antes de que GD pruebe su batallón al analizar el archivo.
como un primer paso, las siguientes comprobaciones de expresiones regulares si la URL es una extensión de imagen: preg_match('@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)([^\s]+(\.(?i)(jpg|png|gif|bmp))$)@', $txt,$url);
¿Qué pasa con malicious.exe renombrado a malicious.jpg? Consejo: no hay nada malo. en el contexto de la creación de miniaturas, es tan peligroso como un archivo de texto sin formato. –
'getimagesize()' no es ni "fuerza bruta" ni una función GD. Es exactamente lo que estás buscando a juzgar por lo que dices en el segundo párrafo. –
¿Cómo manejaría las referencias * cambiantes *? La URL puede ser una imagen válida cuando crea el pulgar, pero luego se puede cambiar más adelante. – Arjan