Предположим, у вас есть миниатюрный генератор script, который принимает исходные изображения в виде 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);