защита имен файлов изображений для пользовательского изображения-щелчка CAPTCHA

Я изучаю .NET C# по книгам и самостоятельным проектам для развлечения. Я подумал, что это может быть хорошим опытом, чтобы попытаться создать свой собственный элемент управления капчей изображения с нуля. Тип, в котором вы определяете «правильное изображение» из нескольких вариантов и нажимаете правильный (кошка или что-то еще), чтобы идентифицировать себя как человека.

Когда я пытался думать обо всех способах, которыми сценарий мог бы научиться обходиться с тем, что я создаю, я рассматривал возможность того, что он мог бы просто узнать правильные ответы путем пробной ошибки и сохранения имен файлов каждого изображения. В конце концов он узнает, какие имена файлов были «правильными».

Я не могу придумать никакого способа скрыть имя файла изображения от браузера или исходного кода, но и переименовывать их каждый раз нецелесообразно. Есть ли способ «рендерить» изображения в каком-то пользовательском типе MIME (это правильный вопрос? Я новичок, извините) каждый раз, когда они запрашиваются, вместо того, чтобы просто выбрасывать IMG SRC?

Это может быть просто невозможно, но я решил попробовать спросить у экспертов. Спасибо за ваше время!


person korben    schedule 02.04.2012    source источник


Ответы (4)


Что вы делаете, так это предоставляете прокси для изображений:

<img src="imageServer.aspx?id=12345" />

То, что вы делаете в конце, отправляет заголовок MIME, а затем передает файл. Таким образом, нет прямой связи между изображением, которое обслуживается, и конкретным именем файла.

person Diodeus - James MacFarlane    schedule 02.04.2012
comment
это звучит увлекательно и кажется отличным вариантом, можете ли вы предоставить какие-либо ссылки, чтобы отправить меня по пути изучения этого? В настоящее время я ничего не знаю о заголовках пантомимы, потоковых файлах и т. д. Даже предложение нескольких условий поиска в Google помогло бы мне на моем пути (помимо очевидных из вашего поста) - спасибо за ваш вклад. - person korben; 02.04.2012
comment
Где-то на сайте есть ответ. Я пытаюсь найти это. - person Diodeus - James MacFarlane; 02.04.2012
comment
Вот: stackoverflow.com/questions/4684673/ - person Diodeus - James MacFarlane; 02.04.2012
comment
этот ответ выглядит хорошо, когда я в основном понимаю процесс и мне нужно разобраться в сложном коде. Я все еще немного не понимаю, что именно здесь происходит, но я поищу в Google общую идею. Благодарность - person korben; 02.04.2012

Вы можете создать класс Bitmap из загруженного изображения и сохранить изображение, используемое для создания растрового изображения где-нибудь для проверки ввода пользователя.

person JleruOHeP    schedule 02.04.2012
comment
так что в основном сохраняя несколько новых изображений каждый раз для использования капчи? Я согласен с этим, если вы согласны, но я не могу говорить о каких-либо последствиях нагрузки в этом сценарии. Мне нравится притворяться, что я создаю большой сайт (который может платить зарплату), когда я работаю над вещами, поэтому я стараюсь не учиться делать вещи, которые могут только поддерживать разработчика, использующего его. - person korben; 02.04.2012

На сайте MSDN есть хороший пример динамического создания образа.

http://msdn.microsoft.com/en-us/library/system.web.httpresponse.outputstream.aspx

person Mesh    schedule 02.04.2012

Я бы рекомендовал использовать для этого универсальный обработчик (*.ashx). Гораздо меньше накладных расходов и более чистый способ загрузки изображения, вызывающего страницу aspx.

Я использовал общие обработчики для изображений бесчисленное количество раз. Например, вы можете обеспечить изменение размера на стороне сервера. Еще одной интересной функцией будет доступ к значениям сеанса, например «показывать изображение только в том случае, если пользователь вошел в систему».

Глядя на http://www.codeproject.com/Articles/34084/Generic-Image-Handler-Using-IHttpHandler может быть хорошим началом.

person citronas    schedule 02.04.2012