kohyar
شنبه 10 تیر 1391, 16:37 عصر
سلام دوستان
من بااستفاده از کد زیر کد امنیتی ایجاد کردم
using System;
using System.Data;
using System.Configuration;
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.Text;
using System.Drawing.Imaging;
using System.Security.Cryptography;
using System.Drawing;
public partial class _Default : System.Web.UI.Page
{
public string createsalt()
{
Random rnd = new Random();
return Convert.ToString(rnd.Next(100000, 999999));
}
public string craeteimage(int w, int h)
{
string salt = createsalt();
Random r = new Random();
Bitmap bmp = new Bitmap(80, 50, PixelFormat.Format24bppRgb);
Graphics g = Graphics.FromImage(bmp);
g.TextRenderingHint = TextRenderingHint.AntiAlias;
//
g.Clear(Color.Gray);
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighSpeed;
System.Drawing.Drawing2D.Matrix mymat = new System.Drawing.Drawing2D.Matrix();
for (int i = 0; i < salt.Length; i++)
{
mymat.Reset();
mymat.RotateAt(r.Next(-45, 0), new PointF((float)(w * (0.12 * i)), (float)(h * 0.5)));
g.Transform=mymat;
//
g.DrawString(salt[i].ToString(), new Font("Comic Sans MS", 12, FontStyle.Bold), Brushes.Blue, (float)(w * (0.12 * i)), (float)(h * 0.5));
g.ResetTransform();
}
bmp.Save(Server.MapPath("~/temp/random.gif"), ImageFormat.Gif);
g.Dispose();
bmp.Dispose();
return salt;
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string salt = craeteimage(100,50);
Image1.ImageUrl = "~/temp/random.gif";
Session.Add("salt", salt);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
if (TextBox1.Text!=Session["salt"].ToString())
{
Label1.Style.Add("color","red");
Label1.Text=" ";
string salt = craeteimage(100, 50);
Image1.ImageUrl ="~/temp/random.gif";
Session.Add("salt", salt);
}
}
}
روال کار بدین صورت هستش که بااستفادهاز تابع random یک عدد تصادفی ایجاد و تبدیل به تصویر می کنم و بعد تصویر رو یکم می چرخونم
این برنامه تو کروم و فایر فاکس بدرستی عمل میکنه ولی تو اینترنت اکسپلورر 8 مشکل دارم
مشکلش هم خیلی عجیبه زمانیکه صفحه رو رفرش می کنم کد امنیتی مجدداً ایجاد و تصویر کد عوض میشه
ولی زمانیکه روی دکمه چک کردن صحت کد امنیتی کلیک می کنم کد اجرا میشه و مقدار session هم عوض میشه ولی تصویر دکمه عوض نمیشه
البه این مشکل رو روی کلاینت که برنامه رو تست می کنم ندارم فقط زمانیکه صفحه رو روی اینترنت آپلود می کنم وجود دارد
حتی روی چند تا هاستینگ مختلف هم تست کردم
من حدس میزنم شاید بخاطر هم نام بودن تصاویر و امکان لود از کش روی هاستینگ ها باشه
لطف88990
من بااستفاده از کد زیر کد امنیتی ایجاد کردم
using System;
using System.Data;
using System.Configuration;
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.Text;
using System.Drawing.Imaging;
using System.Security.Cryptography;
using System.Drawing;
public partial class _Default : System.Web.UI.Page
{
public string createsalt()
{
Random rnd = new Random();
return Convert.ToString(rnd.Next(100000, 999999));
}
public string craeteimage(int w, int h)
{
string salt = createsalt();
Random r = new Random();
Bitmap bmp = new Bitmap(80, 50, PixelFormat.Format24bppRgb);
Graphics g = Graphics.FromImage(bmp);
g.TextRenderingHint = TextRenderingHint.AntiAlias;
//
g.Clear(Color.Gray);
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighSpeed;
System.Drawing.Drawing2D.Matrix mymat = new System.Drawing.Drawing2D.Matrix();
for (int i = 0; i < salt.Length; i++)
{
mymat.Reset();
mymat.RotateAt(r.Next(-45, 0), new PointF((float)(w * (0.12 * i)), (float)(h * 0.5)));
g.Transform=mymat;
//
g.DrawString(salt[i].ToString(), new Font("Comic Sans MS", 12, FontStyle.Bold), Brushes.Blue, (float)(w * (0.12 * i)), (float)(h * 0.5));
g.ResetTransform();
}
bmp.Save(Server.MapPath("~/temp/random.gif"), ImageFormat.Gif);
g.Dispose();
bmp.Dispose();
return salt;
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string salt = craeteimage(100,50);
Image1.ImageUrl = "~/temp/random.gif";
Session.Add("salt", salt);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
if (TextBox1.Text!=Session["salt"].ToString())
{
Label1.Style.Add("color","red");
Label1.Text=" ";
string salt = craeteimage(100, 50);
Image1.ImageUrl ="~/temp/random.gif";
Session.Add("salt", salt);
}
}
}
روال کار بدین صورت هستش که بااستفادهاز تابع random یک عدد تصادفی ایجاد و تبدیل به تصویر می کنم و بعد تصویر رو یکم می چرخونم
این برنامه تو کروم و فایر فاکس بدرستی عمل میکنه ولی تو اینترنت اکسپلورر 8 مشکل دارم
مشکلش هم خیلی عجیبه زمانیکه صفحه رو رفرش می کنم کد امنیتی مجدداً ایجاد و تصویر کد عوض میشه
ولی زمانیکه روی دکمه چک کردن صحت کد امنیتی کلیک می کنم کد اجرا میشه و مقدار session هم عوض میشه ولی تصویر دکمه عوض نمیشه
البه این مشکل رو روی کلاینت که برنامه رو تست می کنم ندارم فقط زمانیکه صفحه رو روی اینترنت آپلود می کنم وجود دارد
حتی روی چند تا هاستینگ مختلف هم تست کردم
من حدس میزنم شاید بخاطر هم نام بودن تصاویر و امکان لود از کش روی هاستینگ ها باشه
لطف88990