Muchas páginas web ahora utilizan imágenes aleatorias al iniciar sesión, lo cual es una forma simple y efectiva de prevenir ataques maliciosos por parte de piratas informáticos. Leí información en Internet hoy y entiendo el principio de generación: obtener una cadena aleatoria de la muestra, guardar la cadena aleatoria en la sesión y formar una imagen de código aleatorio en forma de mapa de bits.
lograr:
Agregue espacio de nombres
usando System.Drawing;
usando System.Drawing.Imaging;
usando System.Drawing.Drawing2D;
Generar código de página
usando System;
usando System.Data;
usando System.Configuration;
usando System.Collections;
usando System.Web;
utilizando System.Web.Security;
utilizando System.Web.UI;
usando System.Web.UI.WebControls;
usando System.Web.UI.WebControls.WebParts;
usando System.Web.UI.HtmlControls;
usando System.Drawing;
usando System.Drawing.Imaging;
usando System.Drawing.Drawing2D
clase parcial pública getRandImg: System.Web.UI.Page;
{
Page_Load vacío protegido (remitente del objeto, EventArgs e)
{
//Generar imágenes de código aleatorio
Establecer código de validación();
//La página generada no se guarda en la caché
Respuesta.Cache.SetNoStore();
}
//Establecer código de verificación
vacío privado SetValidateCode()
{
//Crear un nuevo mapa de bits
Mapa de bits nuevo mapa de bits = nuevo mapa de bits (
71,
veintitrés,
PixelFormat.Format32bppArgb
);
//Obtiene la pantalla de dibujo del mapa de bits
Gráficos g = Graphics.FromImage(newBitmap);
//generador de números aleatorios
Aleatorio r = nuevo Aleatorio();
//Borrar la pantalla de dibujo
g.Claro(Color.Blanco);
//Dibujando interferencias en la línea de la pantalla
para (int i = 0; i < 50; i++)
{
int x1 = r.Siguiente(nuevo mapa de bits.Ancho);
int x2 = r.Siguiente(nuevo mapa de bits.Ancho);
int y1 = r.Next(newBitmap.Height);
int y2 = r.Next(newBitmap.Height);
g.DrawLine(nueva pluma(
Color.FromArgb(r.Siguiente())),
x1,
y1,
x2,
y2
);
}
//Dibujando la interferencia del punto de la pantalla
para (int i = 0; i < 100; i++)
{
int x = r.Siguiente(nuevo mapa de bits.Ancho);
int y = r.Next(newBitmap.Height);
nuevoBitmap.SetPixel(
incógnita,
y,
Color.FromArgb(r.Siguiente())
);
}
//Obtiene una cadena aleatoria (5 dígitos de longitud)
valor de cadena = GenerateRandom(5);
//Asignar cadena aleatoria a la sesión
Sesión["RandCode"] = valor;
//Definir el estilo de fuente de visualización de la imagen
Fuente fuente = nueva fuente (
"Aria",
14,
Estilo de fuente. Negrita
);
Aleatorio rr = nuevo Aleatorio();
int yy = rr.Siguiente(1, 4);
//Definimos una cadena aleatoria para mostrar el pincel de imagen
Pincel LinearGradientBrush = nuevo LinearGradientBrush(
nuevo Rectángulo(0, 0, 71, 23),
Color.Rojo,
Color.Azul,
1.2f,
verdadero
);
g.DrawString(valor, fuente, pincel, 2, yy);
g.DrawRectangle(nuevo lápiz(
Color.Plata),
0,
0,
70,
Veintidós
);
System.IO.MemoryStream ms = nuevo System.IO.MemoryStream();
nuevoBitmap.Save(ms, ImageFormat.Gif);
//Imagen de salida
Respuesta.ClearContent();
Response.ContentType = "imagen/gif";
Respuesta.BinaryWrite(ms.ToArray());
}
//Conjunto constante
carácter estático privado [] constante ={
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
'k','l','m','n','o','p','q','r','s','t',
'u','v','w','x','y','z'
};
//generar cadena aleatoria
cadena estática pública GenerateRandom (longitud int)
{
System.Text.StringBuilder newRandom = nuevo System.Text.StringBuilder(36);
Aleatorio rd = nuevo Aleatorio();
para (int i = 0; i < Longitud; i++)
{
newRandom.Append(constante[rd.Next(36)]);
}
devolver newRandom.ToString();
}
}
Para páginas que utilizan imágenes aleatorias, el control IMAGEN se escribe de la siguiente manera:
<asp:Image ID="Image1" ImageUrl="~/getRandImg.aspx" runat="server" />
Código de muestra: http://www.cnblogs .com /heekui/archive/2007/01/06/613609.html