Viele Webseiten verwenden mittlerweile beim Anmelden zufällige Bilder. Dies ist eine einfache und effektive Möglichkeit, böswillige Angriffe von Hackern zu verhindern. Ich habe heute einige Informationen im Internet gelesen und das Generierungsprinzip verstanden: Holen Sie sich eine zufällige Zeichenfolge aus der Probe, speichern Sie die zufällige Zeichenfolge in der Sitzung und erstellen Sie ein zufälliges Codebild in Form einer Bitmap.
erreichen:
Namespace
mit System.Drawing hinzufügen;
mit System.Drawing.Imaging;
mit System.Drawing.Drawing2D;
Seitencode
mit System generieren;
Verwenden von System.Data;
Verwenden von System.Configuration;
Verwenden von System.Collections;
mit System.Web;
mit System.Web.Security;
mit System.Web.UI;
mit System.Web.UI.WebControls;
mit System.Web.UI.WebControls.WebParts;
mit System.Web.UI.HtmlControls;
Verwenden von System.Drawing;
mit System.Drawing.Imaging;
unter Verwendung von System.Drawing.Drawing2D;
öffentliche Teilklasse getRandImg: System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//Zufällige Codebilder generieren
SetValidateCode();
//Die generierte Seite wird nicht im Cache gespeichert
Response.Cache.SetNoStore();
}
//Bestätigungscode festlegen
private void SetValidateCode()
{
//Erstelle eine neue Bitmap
Bitmap newBitmap = neue Bitmap(
71,
dreiundzwanzig,
PixelFormat.Format32bppArgb
);
//Zeichnungsbildschirm aus der Bitmap abrufen
Grafiken g = Graphics.FromImage(newBitmap);
//Zufallszahlengenerator
Zufällig r = new Random();
//Zeichnungsbildschirm löschen
g.Klar (Farbe.Weiß);
//Interferenz der Bildschirmlinie zeichnen
for (int i = 0; i < 50; i++)
{
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(neuer Stift(
Color.FromArgb(r.Next())),
x1,
y1,
x2,
y2
);
}
//Zeichnungsbildschirmpunktinterferenz
for (int i = 0; i < 100; i++)
{
int x = r.Next(newBitmap.Width);
int y = r.Next(newBitmap.Height);
newBitmap.SetPixel(
X,
ja,
Color.FromArgb(r.Next())
);
}
//Erhalte eine zufällige Zeichenfolge (5 Ziffern lang)
string value = GenerateRandom(5);
//Zufällige Zeichenfolge der Sitzung zuweisen
Session["RandCode"] = value;
//Definieren Sie den Schriftstil für die Bildanzeige
Schriftart Schriftart = neue Schriftart(
„Arial“,
14,
FontStyle.Bold
);
Random rr = new Random();
int yy = rr.Next(1, 4);
//Definieren Sie eine zufällige Zeichenfolge, um den Bildpinsel anzuzeigen
LinearGradientBrush Pinsel = new LinearGradientBrush(
neues Rechteck(0, 0, 71, 23),
Farbe.Rot,
Farbe.Blau,
1.2f,
WAHR
);
g.DrawString(Wert, Schriftart, Pinsel, 2, yy);
g.DrawRectangle(neuer Stift(
Farbe.Silber),
0,
0,
70,
zweiundzwanzig
);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
newBitmap.Save(ms, ImageFormat.Gif);
//Bild ausgeben
Response.ClearContent();
Response.ContentType = "image/gif";
Response.BinaryWrite(ms.ToArray());
}
//Konstantensatz
private statische char[]-Konstante ={
'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“
};
//Zufällige Zeichenfolge generieren
öffentliche statische Zeichenfolge GenerateRandom(int Länge)
{
System.Text.StringBuilder newRandom = new System.Text.StringBuilder(36);
Random rd = new Random();
for (int i = 0; i < Länge; i++)
{
newRandom.Append(constant[rd.Next(36)]);
}
return newRandom.ToString();
}
}
Für Seiten, die zufällige Bilder verwenden, wird das IMAGE-Steuerelement wie folgt geschrieben:
<asp:Image ID="Image1" ImageUrl="~/getRandImg.aspx" runat="server" />
Beispielcode: http://www.cnblogs .com /heekui/archive/2007/01/06/613609.html