Многие веб-страницы теперь используют случайные изображения при входе в систему, что является простым и эффективным способом предотвращения вредоносных атак со стороны хакеров. Почитал сегодня информацию в интернете и понял принцип генерации: получить случайную строку из выборки, сохранить случайную строку в сессию и сформировать случайную кодовую картинку в виде растрового изображения.
выполнить:
Добавьте пространство имен
с помощью System.Drawing;
использование System.Drawing.Imaging;
используя System.Drawing.Drawing2D;
Сгенерировать код страницы
с помощью System;
использование System.Data;
использование System.Configuration;
использование System.Collections;
использование System.Web;
использование System.Web.Security;
использование System.Web.UI;
использование System.Web.UI.WebControls;
использование System.Web.UI.WebControls.WebParts;
использование System.Web.UI.HtmlControls;
использование System.Drawing;
использование System.Drawing.Imaging;
использование общедоступного частичного класса System.Drawing.Drawing2D
getRandImg: System.Web.UI.Page;
{
protected void Page_Load (отправитель объекта, EventArgs e)
{
//Генерируем случайные картинки кода
УстановитьКодПроверки();
//Сгенерированная страница не сохраняется в кэше
Response.Cache.SetNoStore();
}
//Устанавливаем код проверки
частная пустота SetValidateCode()
{
//Создаем новое растровое изображение
Растровое изображение newBitmap = новое растровое изображение(
71,
двадцать три,
ПиксельФормат.Format32bppArgb
);
//Получаем экран рисования из растрового изображения
Графика g = Graphics.FromImage(newBitmap);
//генератор случайных чисел
Случайный r = новый Random();
//Очищаем экран рисования
г.Прозрачный(Цвет.Белый);
//Отрисовка пересечений линий экрана
для (int я = 0; я <50; я++)
{
int x1 = r.Next(newBitmap.Width);
int x2 = r.Next(newBitmap.Width);
int y1 = r.Next(newBitmap.Height);
int y2 = r.Next(newBitmap.Height);
g.DrawLine(новое перо(
Color.FromArgb(r.Next())),
х1,
у1,
х2,
у2
);
}
//Отрисовка пересечения точек экрана
для (int я = 0; я <100; я++)
{
int x = r.Next(newBitmap.Width);
int y = r.Next(newBitmap.Height);
newBitmap.SetPixel(
х,
да,
Цвет.FromArgb(r.Next())
);
}
//Получаем случайную строку (длиной 5 цифр)
строковое значение = GenerateRandom(5);
//Назначаем случайную строку сеансу
Сеанс["RandCode"] = значение;
//Определяем стиль шрифта отображения изображения
Шрифт шрифта = новый шрифт(
«Ариал»,
14,
FontStyle.Жирный
);
Случайный rr = новый Random();
int yy = rr.Next(1, 4);
//Определяем случайную строку для отображения кисти изображения
Кисть LinearGradientBrush = новая LinearGradientBrush(
новый прямоугольник (0, 0, 71, 23),
Цвет.Красный,
Цвет.Синий,
1.2ф,
истинный
);
g.DrawString(значение, шрифт, кисть, 2, гг);
g.DrawRectangle(новое перо(
Цвет.Серебристый),
0,
0,
70,
двадцать два
);
System.IO.MemoryStream мс = новый System.IO.MemoryStream();
newBitmap.Save(ms, ImageFormat.Gif);
//Выходное изображение
Ответ.ОчиститьСодержимое();
Response.ContentType = "изображение/гиф";
Response.BinaryWrite(ms.ToArray());
}
//Константный набор
частная статическая константа char[] ={
'0','1','2','3','4','5','6','7','8','9',
'a','b','c','d','e','f','g','h','i','j',
'к','л','м','н','о','п','к','р','с','т',
'u','v','w','x','y','z'
};
//генерируем случайную строку
общедоступная статическая строка GenerateRandom (int Длина)
{
System.Text.StringBuilder newRandom = новый System.Text.StringBuilder(36);
Случайный rd = новый Random();
for (int я = 0; я <Длина; я++)
{
newRandom.Append(constant[rd.Next(36)]);
}
вернуть newRandom.ToString();
}
}
Для страниц, использующих случайные изображения, элемент управления IMAGE записывается следующим образом:
<asp:Image ID="Image1" ImageUrl="~/getRandImg.aspx" runat="server" />
Пример кода: http://www.cnblogs .com/heekui/archive/2007/01/06/613609.html