PHP конвертировать GD изображение в CSS код для CAPTCHA - PullRequest
0 голосов
/ 02 января 2012

Для генерации капч, которые было бы трудно взломать на машине, я планирую преобразовать изображения текста (только черно-белые) в код CSS, который будет отображаться пользователю.

Таким образом, у этого вопроса есть 2 аспекта:

  1. Это хорошая идея, чтобы сделать капчу трудной для чтения машиной?
  2. Если это так, что будет лучшим способом преобразования изображения GD в CSS?

Я планирую перебрать все пиксели на изображении, проверить, являются ли они черными, и если это так, то напишите пиксель в CSS. Но я не знаю, как писать черные пиксели в CSS (мои навыки CSS отсутствуют). Итак, для моего второго вопроса, я хотел бы знать, как писать черные пиксели в CSS. Если у кого-то нет лучшей идеи для генерации кода CSS или если для этого уже есть инструмент.

Обратите внимание, что я создаю свою собственную систему CAPTCHA, так как я буду использовать введенный ввод для преобразования изображений текста в текст (как это делается в системе ReCAPTCHA), за исключением моих собственных целей. Поэтому я должен сам построить систему CAPTCHA.

Ответы [ 2 ]

1 голос
/ 02 января 2012

Нет абсолютно никакой идеи конвертировать изображение в CSS. Это просто добавляет много лишних накладных расходов и создает гигантский беспорядок CSS, не добавляя никакой реальной ценности. Безопасность через запутывание плоха - особенно здесь.

Кроме того - с чего вы взяли, что программа для взлома CAPTCHA не просто сделает снимок экрана вашего CSS беспорядка и вуаля: ваша CAPTCHA будет изображена в виде картинки? Не делай этого.

Если вы просто сосредоточитесь на том, чтобы сделать текст CAPTCHA сложным, у вас не возникнет проблем. Или вы можете просто сделать, как большинство людей - используйте reCAPTCHA .

0 голосов
/ 02 января 2012

Вы должны сделать что-то вроде этого:

// generate the image $img
function img2data($img) {return "<img src=\"data:image/png;base64,".base64_encode($img)."\" />";}
ob_start("img2data");
imagepng($img);
ob_end_flush();

Это выведет данные изображения непосредственно в HTML-файл и будет отображаться в большинстве браузеров (возможно, не в IE7).

...