Проверка изображений в кодировке Base64Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Проверка изображений в кодировке Base64

Сообщение Anonymous »

Я создаю приложение, которое позволяет пользователю отправлять POST данные холста HTML5, которые затем кодируются в base64 и отображаются всем пользователям. Я рассматриваю возможность синтаксического анализа данных в реальный файл .png и их хранения на сервере, но маршрут base64 позволяет мне хранить изображения в базе данных и минимизировать запросы. Изображения уникальны, их немного, и страница не будет часто обновляться.

Небольшой фрагмент jQuery возьмет данные холста, data:image/png;base64, iVBORw... и передает его PHP-скрипту, который оборачивает его следующим образом:
Изображение


Однако безопасность является краеугольным камнем и нуждается в подтверждении. данные холста base64, чтобы предотвратить передачу вредоносных данных в запросе POST. Моя главная задача — предотвратить внедрение внешних URL-адресов в тег и их запрос при загрузке страницы.

Сейчас у меня есть такая настройка. :

Код: Выделить всё

$data = (isset($_POST['canvas']) && is_string($_POST['canvas'])) ? $_POST['canvas'] : null;
$base = str_replace('data:image/png;base64,', '', $data);
$regx = '~^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$~'

if ((substr($data, 0, 22)) !== 'data:image/png;base64,')
{
// Obviously fake, doesn't contain the expected first 22 characters.
return false;
}

if ((base64_encode(base64_decode($base64, true))) !== $base64)
{
// Decoding and re-encoding the data fails, something is wrong
return false;
}

if ((preg_match($regx, $base64)) !== 1)
{
// The data doesn't match the regular expression, discard
return false;
}

return true;
Я хочу убедиться, что моя текущая настройка достаточно безопасна, чтобы предотвратить вставку внешних URL-адресов в тег , а если нет, что можно необходимо сделать для дальнейшей проверки данных изображения?

Подробнее здесь: https://stackoverflow.com/questions/126 ... ded-images
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»