ASP.NET 인증 코드(3 가지)
그 실험 증 코드 의 역할 은 악의 적 으로 비밀 번 호 를 해독 하고 표를 긁 으 며 포럼 에 물 을 붓 고 페이지 를 긁 는 것 을 방지 하 는 것 이다.어떤 해커 가 특정한 등록 사용자 에 게 특정한 프로그램 폭력 으로 해결 하 는 방식 으로 끊 임 없 는 로그 인 시 도 를 하 는 것 을 효과적으로 방지 하 다.오늘 은 ASP.NET 의 세 가지 인증 코드 를 공유 하 겠 습 니 다.
1.GSC_웹 콘 트 롤 라 이브 러 리 는 인터넷 에서 찾 은 컨트롤 로 아주 좋 습 니 다.하지만 효과 가 그다지 좋 지 않다.
)사용 하기 쉽 지만 모든 속성 을 컨트롤 처럼 설정 할 수 있 지만 가용성 이 높 지 않 습 니 다.사용 자 는 사용자 정의 가 불가능 하고 인증 코드 의 효과 가 좋 지 않 은 것 같 습 니 다.
효과:
2.한 페이지 로 그림 을 만 들 고 다른 페이지 에서 호출 합 니 다.인증 코드 는 쿠키 에 저장 하고 호출 할 때 쿠키 를 가 져 와 비교 검증 합 니 다.이 사용 자 는 자신의 취향 에 따라 효과 와 인증 코드 의 길 이 를 변경 할 수 있 습 니 다.
효과 그림:
CheckCode.aspx 코드 는 다음 과 같 습 니 다.
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
public partial class Tools_CheckCode : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
this.CreateCheckCodeImage(GenerateCheckCode());
}
private string GenerateCheckCode()
{
int number;
char code;
string checkCode = String.Empty;
System.Random random = new Random();
for (int i = 0; i < 5; i++)
{
number = random.Next();
if (number % 2 == 0)
code = (char)('0' + (char)(number % 10));
else
code = (char)('A' + (char)(number % 26));
checkCode += code.ToString();
}
Response.Cookies.Add(new HttpCookie("CheckCode", checkCode));
return checkCode;
}
private void CreateCheckCodeImage(string checkCode)
{
if (checkCode == null || checkCode.Trim() == String.Empty)
return;
System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
Graphics g = Graphics.FromImage(image);
try
{
//
Random random = new Random();
//
g.Clear(Color.White);
//
for (int i = 0; i < 25; i++)
{
int x1 = random.Next(image.Width);
int x2 = random.Next(image.Width);
int y1 = random.Next(image.Height);
int y2 = random.Next(image.Height);
g.DrawLine(new Pen(Color.GreenYellow), x1, y1, x2, y2);
}
Font font = new System.Drawing.Font("Verdana", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);
g.DrawString(checkCode, font, brush, 2, 2);
//
for (int i = 0; i < 80; i++)
{
int x = random.Next(image.Width);
int y = random.Next(image.Height);
image.SetPixel(x, y, Color.FromArgb(random.Next()));
}
//
g.DrawRectangle(new Pen(Color.Red), 0, 0, image.Width - 1, image.Height - 1);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType = "image/Gif";
Response.BinaryWrite(ms.ToArray());
}
finally
{
g.Dispose();
image.Dispose();
}
}
}
그리고 사용 할 페이지 참조:UseCheckCode.aspx
<img src="Tools/CheckCode.aspx" alt=" " style="width: 60px; height: 24px" />
3.웹 handler 로 그림 을 생 성 합 니 다.이것 은 사실 앞의 뜻 과 크게 다 르 지 않 고 호출 방법 도 기본적으로 2 와 같 습 니 다.다른 것 은 인증 코드 가 Session 에 저 장 된 것 입 니 다.학습 에 참고 하도록 제공 하 다.효과 도 는 다음 과 같다.
ValidateImageHandler.ashx
%@ WebHandler Language="C#" Class="ValidateImageHandler" %>
using System;
using System.Web;
using System.Web.SessionState;
using System.Drawing;
using System.Drawing.Imaging;
using System.Text;
/// <summary>
/// ValidateImageHandler
/// </summary>
public class ValidateImageHandler : IHttpHandler, IRequiresSessionState
{
int intLength = 5; //
string strIdentify = "Identify"; // , Session
public ValidateImageHandler()
{
}
/// <summary>
///
/// </summary>
/// <param name="hc"></param>
public void ProcessRequest(HttpContext hc)
{
//
hc.Response.ContentType = "image/gif";
Bitmap b = new Bitmap(200, 60);
Graphics g = Graphics.FromImage(b);
g.FillRectangle(new SolidBrush(Color.YellowGreen), 0, 0, 200, 60);
Font font = new Font(FontFamily.GenericSerif, 48, FontStyle.Bold, GraphicsUnit.Pixel);
Random r = new Random();
//
string strLetters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
StringBuilder s = new StringBuilder();
//
for (int i = 0; i < intLength; i++)
{
s.Append(strLetters.Substring(r.Next(0, strLetters.Length - 1), 1));
g.DrawString(s[s.Length - 1].ToString(), font, new SolidBrush(Color.Blue), i * 38, r.Next(0, 15));
}
//
Pen pen = new Pen(new SolidBrush(Color.Blue), 2);
for (int i = 0; i < 10; i++)
{
g.DrawLine(pen, new Point(r.Next(0, 199), r.Next(0, 59)), new Point(r.Next(0, 199), r.Next(0, 59)));
}
b.Save(hc.Response.OutputStream, ImageFormat.Gif);
hc.Session[strIdentify] = s.ToString(); // Session ,
hc.Response.End();
}
/// <summary>
/// ( )
/// </summary>
public bool IsReusable
{
get
{
return true;
}
}
}
이상 은 ASP.NET 3 인증 코드 로 각각 장단 점 이 있 으 니 서로 다른 인증 코드 의 기능 을 능숙 하 게 구현 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
HttpGuardHttpGuard 는 openresty 를 기반 으로 lua 스 크 립 트 언어 로 개 발 된 cc 공격 방지 소프트웨어 입 니 다.한편, openresty 는 고성능 웹 서버 Nginx 와 일련의 Nginx 모듈 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.