Предположим, у вас есть сценарий генератора миниатюр, который принимает исходные изображения в форме URL-адреса. Есть ли способ определить, является ли исходный URL-адрес «сломанным» - он не существует или ведет к файлу без изображения?
Просто перебор с использованием getimagesize ()
или другой функции PHP GD не является решением, поскольку подмененные случайные URL-адреса могут быть вовсе не изображениями ( http://example.com/malicious.exe
или тот же файл, но переименованный в http://example.com/malicious. jpg
) могут быть введены - такие случаи могут быть легко обнаружены PHP до вызова GD. Я ищу предварительную дезинфекцию GD, прежде чем GD попробует свой батальон проанализировать файл.
в качестве первого шага следующее регулярное выражение проверяет, является ли URL-адрес расширением изображения:
preg_match ('@ (https?: // ([- \ w \.] +) + (: \ D +)? (/ ([\ W / _ \.] * (\? \ S +)?) ?)?) ([^ \ s] + (\. (? i) (jpg | png | gif | bmp)) $) @ ', $ txt, $ url);