Asp.Net 生成验证码,清空缓存,分页方法,生成图片水印,防注入过滤,页面过滤HTML,文字转图片
2014-06-27 10:54
951 查看
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;
//生成验证码
public partial class CheckCode : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
//生成验证码
string temp = this.GetCode(4);
HttpCookie cookie = new HttpCookie("yzm");
cookie.Value = temp;
Response.Cookies.Add(cookie);
//画图
this.GetCheckCodeImage(temp);
}
}
//产生随机字符串
private string GetCode(int num)
{
string[] source ={ "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" ,"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"};
string code = "";
Random rd = new Random();
for (int i = 0; i < num; i++)
{
code += source[rd.Next(0, source.Length)];
}
Session["ValidateCode"] = code;//将字符串保存到Session中,以便需要时进行验证
return code;
}
#region 验证码
/// <summary>
/// 生成验证码
/// </summary>
/// <param name="checkCode"></param>
private void GetCheckCodeImage(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)),25);
Graphics g = Graphics.FromImage(image);
try
{
Random random = new Random(); //生成随机生成器
g.Clear(Color.White); //清空图片背景色
for (int i = 0; i < 5; 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.Silver), x1, y1, x2, y2);
}
Font font = new System.Drawing.Font("Arial", 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 < 60; 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.Silver), 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();
}
}
#endregion
}
//清空客户端页面缓存
public static void ClearClientPageCache()
{
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.Expires = 0;
HttpContext.Current.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.AddHeader("pragma", "no-cache");
HttpContext.Current.Response.AddHeader("cache-control", "private");
HttpContext.Current.Response.CacheControl = "no-cache";
}
分页方法
using System;
using System.Collections.Generic;
using System.Web;
using System.Text;
using System.Text.RegularExpressions;
public class PagingCollection<T>
{
private int pagezise;
public int Pagezise
{
get { return pagezise; }
set { pagezise = value; }
}
private int pageindex;
public int Pageindex
{
get { return pageindex; }
set { pageindex = value; }
}
private int TotalCount;
public int TotalCount1
{
get { return TotalCount; }
set { TotalCount = value; }
}
private int TotalPage=0;
public int TotalPage1
{
get { return TotalPage; }
set { TotalPage = value; }
}
private string url;
public string Url
{
get { return url; }
set { url = value; }
}
private string urlparms;
public string Urlparms
{
get {
return urlparms; }
set { urlparms = value; }
}
/// <summary>
/// 分页数据构造
/// </summary>
/// <param name="source"></param>
/// <param name="pageindex"></param>
/// <param name="pagezise"></param>
/// <param name="totalcount"></param>
/// <param name="url"></param>
public PagingCollection(int pageindex, int pagezise, int totalcount, string url)
{
this.pageindex = pageindex;
this.pagezise = pagezise;
TotalCount = totalcount;
TotalPage = (int)Math.Ceiling(TotalCount / (double)pagezise);
this.url = url;
}
public PagingCollection(int pageindex, int pagezise, int totalcount, string url,string urlparms)
{
this.pageindex = pageindex;
this.pagezise = pagezise;
TotalCount = totalcount;
TotalPage = (int)Math.Ceiling(TotalCount / (double)pagezise);
this.url = url;
this.urlparms = urlparms;
}
#region 分页属性 返回分页数据
public string GetPatePar
{
get
{
if (TotalCount1 >
4000
; 0)
{
StringBuilder str = new StringBuilder();
int startpage = (pageindex - 1) / 10 * 10 + 1;
int endpage = (pageindex - 1) / 10 * 10 + 10;
int x = endpage > TotalPage ? TotalPage : endpage;
str.Append("<div style=' color:#1E5494;'>共" + TotalPage1 + "页 / 当前第" + pageindex + "页 ");
if (HasPreviousPage)
{
str.Append("<a href=" + url + "?page=1" + GetURLParms + "" + urlparms + ">首页</a> ");
str.Append("<a href=" + url + "?page=" + (pageindex - 1) + GetURLParms + "" + urlparms + ">上一页</a>");
}
else
{
str.Append("<a href=#>首页 </a>");
str.Append("<a href=#>上一页</a>");
}
for (int i = startpage; i <= x; i++)
{
if (i == pageindex)
{
str.Append(string.Format("<a style='margin-left:3px; margin-right:3px;padding:2px 4px 2px 4px;color:red;border:1px solid #cccccc;background-color:#ffffff; '>" + i + "</a>"));
}
else
{
str.Append(string.Format("<a style='margin-left:3px; margin-right:3px;' href=" + url + "?page=" + i + GetURLParms + "" + urlparms + ">" + i + "</a>"));
}
}
if (HasNextPage)
{
str.Append("<a href=" + url + "?page=" + (pageindex + 1) + GetURLParms + "" + urlparms + ">下一页 </a>");
str.Append("<a href=" + url + "?page=" + TotalPage + GetURLParms + "" + urlparms + ">尾页</a>");
}
else
{
str.Append("<a href=#>下一页 </a>");
str.Append("<a href=#>尾页</a>");
}
str.Append("</div>");
return str.ToString();
}
else
{
return "<font color=red>暂无数据!</font>";
}
}
}
#endregion
/// <summary>
/// url重写
/// </summary>
private string GetURLParms
{
get
{
string query = HttpContext.Current.Request.Url.Query;
query = Regex.Replace(query, @"\?page=\d*", "", RegexOptions.Compiled);
return query;
}
}
/// <summary>
///判断是否有上一页
/// </summary>
public bool HasPreviousPage
{
get
{
return (pageindex > 1);
}
}
/// <summary>
///判断是否有下一页
/// </summary>
public bool HasNextPage
{
get
{
return (pageindex < TotalPage);
}
}
}
/// <summary>
/// 分页数据类
/// </summary>
/// <typeparam name="T"></typeparam>
public class PageBean<T>
{
IList<T> datasource = new List<T>();
public IList<T> Datasource
{
get { return datasource; }
set { datasource = value; }
}
int pagesum;
public int Pagesum
{
get { return pagesum; }
set { pagesum = value; }
}
public PageBean(IList<T> datasource, int pagesum)
{
this.datasource = datasource;
this.pagesum = pagesum;
}
public PageBean()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
}
//[b]生成图片水印[/b]
[b]using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
/// <summary>
/// PictureHandler 的摘要说明
/// </summary>
public class PicHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string imgUrl = context.Request.PhysicalPath;//得到当前处理图片的物理路径
if (File.Exists(imgUrl))
{
Image img = Image.FromFile(imgUrl);//通过图片路径得到图片对象
Image watering = Image.FromFile(context.Server.MapPath("~/themes/images/water.jpg"));//得到数字水印图片
Graphics g = Graphics.FromImage(img);//通过图片对象创建画布
g.DrawImage(watering, new Rectangle(img.Width - watering.Width, img.Height - watering.Height, watering.Width, watering.Height), 0, 0, watering.Width, watering.Height, GraphicsUnit.Pixel);//画图
context.Response.ContentType = "image/jpeg";//设置图片的格式
img.Save(context.Response.OutputStream, ImageFormat.Jpeg);//把图片保存在输出流中
g.Dispose();//销毁画布
img.Dispose();//销毁图片
context.Response.End();
}
else
{
Image defaultimg = Image.FromFile(context.Server.MapPath("~/themes/images/water.jpg"));//通过图片路径得到默认图片对象
Image watering = Image.FromFile(context.Server.MapPath("~/themes/images/water.jpg"));//得到数字水印图片
Graphics g = Graphics.FromImage(defaultimg);//通过图片对象创建画布
g.DrawImage(watering, new Rectangle(defaultimg.Width - watering.Width, defaultimg.Height - watering.Height, watering.Width, watering.Height), 0, 0, watering.Width, watering.Height, GraphicsUnit.Pixel);//画图
context.Response.ContentType = "image/jpeg";//设置图片的格式
defaultimg.Save(context.Response.OutputStream, ImageFormat.Jpeg);
g.Dispose();
defaultimg.Dispose();
context.Response.End();
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
[/b]
[b]//[b]防注入过滤[/b][/b]
[b][b]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.Data.SqlClient;
/// <summary>
/// SqlCheck 的摘要说明
/// </summary>
public class SqlCheck
{
public void CheckSql()
{
string jk1986_sql = "exec↓select↓drop↓alter↓exists↓union↓and↓or↓xor↓order↓mid↓asc↓execute↓xp_cmdshell↓insert↓update↓delete↓join↓declare↓char↓sp_oacreate↓wscript.shell↓xp_regwrite↓'↓;↓--";
string[] jk_sql = jk1986_sql.Split('↓');
foreach (string jk in jk_sql)
{
// -----------------------防 Post 注入-----------------------
if (System.Web.HttpContext.Current.Request.Form != null)
{
for (int k = 0; k < System.Web.HttpContext.Current.Request.Form.Count; k++)
{
string getsqlkey = System.Web.HttpContext.Current.Request.Form.Keys[k];
string getip;
if (System.Web.HttpContext.Current.Request.Form[getsqlkey].ToLower().Contains(jk) == true)
{
System.Web.HttpContext.Current.Response.Write("<script Language=JavaScript>alert('请勿提交非法字符!');</" + "script>");
System.Web.HttpContext.Current.Response.Write("非法操作!系统做了如下记录 ↓" + "<br>");
if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
{
getip = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
}
else
{
getip = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
System.Web.HttpContext.Current.Response.Write("操 作 I P :" + getip + "<br>");
System.Web.HttpContext.Current.Response.Write("操 作 时 间:" + DateTime.Now.ToString() + "<br>");
System.Web.HttpContext.Current.Response.Write("操 作 页 面:" + System.Web.HttpContext.Current.Request.ServerVariables["URL"] + "<br>");
System.Web.HttpContext.Current.Response.Write("提 交 方 式:P O S T " + "<br>");
System.Web.HttpContext.Current.Response.Write("提 交 参 数:" + jk + "<br>");
System.Web.HttpContext.Current.Response.Write("提 交 数 据:" + System.Web.HttpContext.Current.Request.Form[getsqlkey].ToLower() + "<br>");
System.Web.HttpContext.Current.Response.End();
}
}
}
// -----------------------防 GET 注入-----------------------
if (System.Web.HttpContext.Current.Request.QueryString != null)
{
for (int k = 0; k < System.Web.HttpContext.Current.Request.QueryString.Count; k++)
{
string getsqlkey = System.Web.HttpContext.Current.Request.QueryString.Keys[k];
string getip;
if (System.Web.HttpContext.Current.Request.QueryString[getsqlkey].ToLower().Contains(jk) == true)
{
System.Web.HttpContext.Current.Response.Write("<script Language=JavaScript>alert('请勿提交非法字符!');</" + "script>");
System.Web.HttpContext.Current.Response.Write("非法操作!系统做了如下记录 ↓" + "<br>");
if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
{
getip = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
}
else
{
getip = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
System.Web.HttpContext.Current.Response.Write("操 作 I P :" + getip + "<br>");
System.Web.HttpContext.Current.Response.Write("操 作 时 间:" + DateTime.Now.ToString() + "<br>");
System.Web.HttpContext.Current.Response.Write("操 作 页 面:" + System.Web.HttpContext.Current.Request.ServerVariables["URL"] + "<br>");
System.Web.HttpContext.Current.Response.Write("提 交 方 式:G E T " + "<br>");
System.Web.HttpContext.Current.Response.Write("提 交 参 数:" + jk + "<br>");
System.Web.HttpContext.Current.Response.Write("提 交 数 据:" + System.Web.HttpContext.Current.Request.QueryString[getsqlkey].ToLower() + "<br>");
System.Web.HttpContext.Current.Response.End();
}
}
}
// -----------------------防 Cookies 注入-----------------------
if (System.Web.HttpContext.Current.Request.Cookies != null)
{
a3fb
for (int k = 0; k < System.Web.HttpContext.Current.Request.Cookies.Count; k++)
{
string getsqlkey = System.Web.HttpContext.Current.Request.Cookies.Keys[k];
string getip;
if (System.Web.HttpContext.Current.Request.Cookies[getsqlkey].Value.ToLower().Contains(jk) == true)
{
System.Web.HttpContext.Current.Response.Write("<script Language=JavaScript>alert('请勿提交非法字符!');</" + "script>");
System.Web.HttpContext.Current.Response.Write("非法操作!系统做了如下记录 ↓" + "<br>");
if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
{
getip = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
}
else
{
getip = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
System.Web.HttpContext.Current.Response.Write("操 作 I P :" + getip + "<br>");
System.Web.HttpContext.Current.Response.Write("操 作 时 间:" + DateTime.Now.ToString() + "<br>");
System.Web.HttpContext.Current.Response.Write("操 作 页 面:" + System.Web.HttpContext.Current.Request.ServerVariables["URL"] + "<br>");
System.Web.HttpContext.Current.Response.Write("提 交 方 式: Cookies " + "<br>");
System.Web.HttpContext.Current.Response.Write("提 交 参 数:" + jk + "<br>");
System.Web.HttpContext.Current.Response.Write("提 交 数 据:" + System.Web.HttpContext.Current.Request.Cookies[getsqlkey].Value.ToLower() + "<br>");
System.Web.HttpContext.Current.Response.End();
}
}
}
}
}
}
[/b][/b]
[b][b]//页面过滤HTML[/b][/b]
[b][b]/// <summary>
/// 过滤标记
/// </summary>
/// <param name="NoHTML">包括HTML,脚本,数据库关键字,特殊字符的源码 </param>
/// <returns>已经去除标记后的文字</returns>
public static string NoHTML(string Htmlstring)
{
if (Htmlstring == null)
{
return "";
}
else
{
//删除脚本
Htmlstring = Regex.Replace(Htmlstring, @"<script[^>]*?>.*?</script>", "", RegexOptions.IgnoreCase);
//删除HTML
Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"<!--.*", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(quot|#34);", "\"", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(amp|#38);", "&", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(lt|#60);", "<", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(gt|#62);", ">", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(nbsp|#160);", " ", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(iexcl|#161);", "\xa1", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(cent|#162);", "\xa2", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(pound|#163);", "\xa3", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(copy|#169);", "\xa9", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"(\d+);", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "xp_cmdshell", "", RegexOptions.IgnoreCase);
//删除与数据库相关的词
Htmlstring = Regex.Replace(Htmlstring, "select", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "insert", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "delete from", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "count''", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "drop table", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "truncate", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "asc", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "mid", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "char", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "xp_cmdshell", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "exec master", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "net localgroup administrators", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "and", "", RegexOptions.IgnoreCase);
return Htmlstring ;
}
}
[/b][/b]
[b][b]//文字转图片[/b][/b]
[b][b] void ConvertTextFileToImage(String textFile,String imageFile)
{
System.Drawing.Font drawFont = new System.Drawing.Font("宋体", 12);
System.Drawing.Bitmap image = new System.Drawing.Bitmap(1, 1);
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);
String text = System.IO.File.ReadAllText(textFile, Encoding.GetEncoding("GB2312"));
System.Drawing.SizeF sf = g.MeasureString(text, drawFont, 1024); //设置一个显示的宽度
image = new System.Drawing.Bitmap(image, new System.Drawing.Size(Convert.ToInt32(sf.Width), Convert.ToInt32(sf.Height)));
g = System.Drawing.Graphics.FromImage(image);
g.Clear(System.Drawing.Color.White);
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;
g.DrawString(text, drawFont, System.Drawing.Brushes.Black, new System.Drawing.RectangleF(new System.Drawing.PointF(0, 0), sf));
image.Save(imageFile, System.Drawing.Imaging.ImageFormat.Png);
g.Dispose();
image.Dispose();
}[/b][/b]
//调用
ConvertTextFileToImage(Server.MapPath("~/Log.txt"),Server.MapPath("~/Log.png"));
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;
//生成验证码
public partial class CheckCode : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
//生成验证码
string temp = this.GetCode(4);
HttpCookie cookie = new HttpCookie("yzm");
cookie.Value = temp;
Response.Cookies.Add(cookie);
//画图
this.GetCheckCodeImage(temp);
}
}
//产生随机字符串
private string GetCode(int num)
{
string[] source ={ "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" ,"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"};
string code = "";
Random rd = new Random();
for (int i = 0; i < num; i++)
{
code += source[rd.Next(0, source.Length)];
}
Session["ValidateCode"] = code;//将字符串保存到Session中,以便需要时进行验证
return code;
}
#region 验证码
/// <summary>
/// 生成验证码
/// </summary>
/// <param name="checkCode"></param>
private void GetCheckCodeImage(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)),25);
Graphics g = Graphics.FromImage(image);
try
{
Random random = new Random(); //生成随机生成器
g.Clear(Color.White); //清空图片背景色
for (int i = 0; i < 5; 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.Silver), x1, y1, x2, y2);
}
Font font = new System.Drawing.Font("Arial", 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 < 60; 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.Silver), 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();
}
}
#endregion
}
//清空客户端页面缓存
public static void ClearClientPageCache()
{
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.Expires = 0;
HttpContext.Current.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.AddHeader("pragma", "no-cache");
HttpContext.Current.Response.AddHeader("cache-control", "private");
HttpContext.Current.Response.CacheControl = "no-cache";
}
分页方法
using System;
using System.Collections.Generic;
using System.Web;
using System.Text;
using System.Text.RegularExpressions;
public class PagingCollection<T>
{
private int pagezise;
public int Pagezise
{
get { return pagezise; }
set { pagezise = value; }
}
private int pageindex;
public int Pageindex
{
get { return pageindex; }
set { pageindex = value; }
}
private int TotalCount;
public int TotalCount1
{
get { return TotalCount; }
set { TotalCount = value; }
}
private int TotalPage=0;
public int TotalPage1
{
get { return TotalPage; }
set { TotalPage = value; }
}
private string url;
public string Url
{
get { return url; }
set { url = value; }
}
private string urlparms;
public string Urlparms
{
get {
return urlparms; }
set { urlparms = value; }
}
/// <summary>
/// 分页数据构造
/// </summary>
/// <param name="source"></param>
/// <param name="pageindex"></param>
/// <param name="pagezise"></param>
/// <param name="totalcount"></param>
/// <param name="url"></param>
public PagingCollection(int pageindex, int pagezise, int totalcount, string url)
{
this.pageindex = pageindex;
this.pagezise = pagezise;
TotalCount = totalcount;
TotalPage = (int)Math.Ceiling(TotalCount / (double)pagezise);
this.url = url;
}
public PagingCollection(int pageindex, int pagezise, int totalcount, string url,string urlparms)
{
this.pageindex = pageindex;
this.pagezise = pagezise;
TotalCount = totalcount;
TotalPage = (int)Math.Ceiling(TotalCount / (double)pagezise);
this.url = url;
this.urlparms = urlparms;
}
#region 分页属性 返回分页数据
public string GetPatePar
{
get
{
if (TotalCount1 >
4000
; 0)
{
StringBuilder str = new StringBuilder();
int startpage = (pageindex - 1) / 10 * 10 + 1;
int endpage = (pageindex - 1) / 10 * 10 + 10;
int x = endpage > TotalPage ? TotalPage : endpage;
str.Append("<div style=' color:#1E5494;'>共" + TotalPage1 + "页 / 当前第" + pageindex + "页 ");
if (HasPreviousPage)
{
str.Append("<a href=" + url + "?page=1" + GetURLParms + "" + urlparms + ">首页</a> ");
str.Append("<a href=" + url + "?page=" + (pageindex - 1) + GetURLParms + "" + urlparms + ">上一页</a>");
}
else
{
str.Append("<a href=#>首页 </a>");
str.Append("<a href=#>上一页</a>");
}
for (int i = startpage; i <= x; i++)
{
if (i == pageindex)
{
str.Append(string.Format("<a style='margin-left:3px; margin-right:3px;padding:2px 4px 2px 4px;color:red;border:1px solid #cccccc;background-color:#ffffff; '>" + i + "</a>"));
}
else
{
str.Append(string.Format("<a style='margin-left:3px; margin-right:3px;' href=" + url + "?page=" + i + GetURLParms + "" + urlparms + ">" + i + "</a>"));
}
}
if (HasNextPage)
{
str.Append("<a href=" + url + "?page=" + (pageindex + 1) + GetURLParms + "" + urlparms + ">下一页 </a>");
str.Append("<a href=" + url + "?page=" + TotalPage + GetURLParms + "" + urlparms + ">尾页</a>");
}
else
{
str.Append("<a href=#>下一页 </a>");
str.Append("<a href=#>尾页</a>");
}
str.Append("</div>");
return str.ToString();
}
else
{
return "<font color=red>暂无数据!</font>";
}
}
}
#endregion
/// <summary>
/// url重写
/// </summary>
private string GetURLParms
{
get
{
string query = HttpContext.Current.Request.Url.Query;
query = Regex.Replace(query, @"\?page=\d*", "", RegexOptions.Compiled);
return query;
}
}
/// <summary>
///判断是否有上一页
/// </summary>
public bool HasPreviousPage
{
get
{
return (pageindex > 1);
}
}
/// <summary>
///判断是否有下一页
/// </summary>
public bool HasNextPage
{
get
{
return (pageindex < TotalPage);
}
}
}
/// <summary>
/// 分页数据类
/// </summary>
/// <typeparam name="T"></typeparam>
public class PageBean<T>
{
IList<T> datasource = new List<T>();
public IList<T> Datasource
{
get { return datasource; }
set { datasource = value; }
}
int pagesum;
public int Pagesum
{
get { return pagesum; }
set { pagesum = value; }
}
public PageBean(IList<T> datasource, int pagesum)
{
this.datasource = datasource;
this.pagesum = pagesum;
}
public PageBean()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
}
//[b]生成图片水印[/b]
[b]using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
/// <summary>
/// PictureHandler 的摘要说明
/// </summary>
public class PicHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string imgUrl = context.Request.PhysicalPath;//得到当前处理图片的物理路径
if (File.Exists(imgUrl))
{
Image img = Image.FromFile(imgUrl);//通过图片路径得到图片对象
Image watering = Image.FromFile(context.Server.MapPath("~/themes/images/water.jpg"));//得到数字水印图片
Graphics g = Graphics.FromImage(img);//通过图片对象创建画布
g.DrawImage(watering, new Rectangle(img.Width - watering.Width, img.Height - watering.Height, watering.Width, watering.Height), 0, 0, watering.Width, watering.Height, GraphicsUnit.Pixel);//画图
context.Response.ContentType = "image/jpeg";//设置图片的格式
img.Save(context.Response.OutputStream, ImageFormat.Jpeg);//把图片保存在输出流中
g.Dispose();//销毁画布
img.Dispose();//销毁图片
context.Response.End();
}
else
{
Image defaultimg = Image.FromFile(context.Server.MapPath("~/themes/images/water.jpg"));//通过图片路径得到默认图片对象
Image watering = Image.FromFile(context.Server.MapPath("~/themes/images/water.jpg"));//得到数字水印图片
Graphics g = Graphics.FromImage(defaultimg);//通过图片对象创建画布
g.DrawImage(watering, new Rectangle(defaultimg.Width - watering.Width, defaultimg.Height - watering.Height, watering.Width, watering.Height), 0, 0, watering.Width, watering.Height, GraphicsUnit.Pixel);//画图
context.Response.ContentType = "image/jpeg";//设置图片的格式
defaultimg.Save(context.Response.OutputStream, ImageFormat.Jpeg);
g.Dispose();
defaultimg.Dispose();
context.Response.End();
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
[/b]
[b]//[b]防注入过滤[/b][/b]
[b][b]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.Data.SqlClient;
/// <summary>
/// SqlCheck 的摘要说明
/// </summary>
public class SqlCheck
{
public void CheckSql()
{
string jk1986_sql = "exec↓select↓drop↓alter↓exists↓union↓and↓or↓xor↓order↓mid↓asc↓execute↓xp_cmdshell↓insert↓update↓delete↓join↓declare↓char↓sp_oacreate↓wscript.shell↓xp_regwrite↓'↓;↓--";
string[] jk_sql = jk1986_sql.Split('↓');
foreach (string jk in jk_sql)
{
// -----------------------防 Post 注入-----------------------
if (System.Web.HttpContext.Current.Request.Form != null)
{
for (int k = 0; k < System.Web.HttpContext.Current.Request.Form.Count; k++)
{
string getsqlkey = System.Web.HttpContext.Current.Request.Form.Keys[k];
string getip;
if (System.Web.HttpContext.Current.Request.Form[getsqlkey].ToLower().Contains(jk) == true)
{
System.Web.HttpContext.Current.Response.Write("<script Language=JavaScript>alert('请勿提交非法字符!');</" + "script>");
System.Web.HttpContext.Current.Response.Write("非法操作!系统做了如下记录 ↓" + "<br>");
if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
{
getip = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
}
else
{
getip = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
System.Web.HttpContext.Current.Response.Write("操 作 I P :" + getip + "<br>");
System.Web.HttpContext.Current.Response.Write("操 作 时 间:" + DateTime.Now.ToString() + "<br>");
System.Web.HttpContext.Current.Response.Write("操 作 页 面:" + System.Web.HttpContext.Current.Request.ServerVariables["URL"] + "<br>");
System.Web.HttpContext.Current.Response.Write("提 交 方 式:P O S T " + "<br>");
System.Web.HttpContext.Current.Response.Write("提 交 参 数:" + jk + "<br>");
System.Web.HttpContext.Current.Response.Write("提 交 数 据:" + System.Web.HttpContext.Current.Request.Form[getsqlkey].ToLower() + "<br>");
System.Web.HttpContext.Current.Response.End();
}
}
}
// -----------------------防 GET 注入-----------------------
if (System.Web.HttpContext.Current.Request.QueryString != null)
{
for (int k = 0; k < System.Web.HttpContext.Current.Request.QueryString.Count; k++)
{
string getsqlkey = System.Web.HttpContext.Current.Request.QueryString.Keys[k];
string getip;
if (System.Web.HttpContext.Current.Request.QueryString[getsqlkey].ToLower().Contains(jk) == true)
{
System.Web.HttpContext.Current.Response.Write("<script Language=JavaScript>alert('请勿提交非法字符!');</" + "script>");
System.Web.HttpContext.Current.Response.Write("非法操作!系统做了如下记录 ↓" + "<br>");
if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
{
getip = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
}
else
{
getip = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
System.Web.HttpContext.Current.Response.Write("操 作 I P :" + getip + "<br>");
System.Web.HttpContext.Current.Response.Write("操 作 时 间:" + DateTime.Now.ToString() + "<br>");
System.Web.HttpContext.Current.Response.Write("操 作 页 面:" + System.Web.HttpContext.Current.Request.ServerVariables["URL"] + "<br>");
System.Web.HttpContext.Current.Response.Write("提 交 方 式:G E T " + "<br>");
System.Web.HttpContext.Current.Response.Write("提 交 参 数:" + jk + "<br>");
System.Web.HttpContext.Current.Response.Write("提 交 数 据:" + System.Web.HttpContext.Current.Request.QueryString[getsqlkey].ToLower() + "<br>");
System.Web.HttpContext.Current.Response.End();
}
}
}
// -----------------------防 Cookies 注入-----------------------
if (System.Web.HttpContext.Current.Request.Cookies != null)
{
a3fb
for (int k = 0; k < System.Web.HttpContext.Current.Request.Cookies.Count; k++)
{
string getsqlkey = System.Web.HttpContext.Current.Request.Cookies.Keys[k];
string getip;
if (System.Web.HttpContext.Current.Request.Cookies[getsqlkey].Value.ToLower().Contains(jk) == true)
{
System.Web.HttpContext.Current.Response.Write("<script Language=JavaScript>alert('请勿提交非法字符!');</" + "script>");
System.Web.HttpContext.Current.Response.Write("非法操作!系统做了如下记录 ↓" + "<br>");
if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
{
getip = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
}
else
{
getip = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
System.Web.HttpContext.Current.Response.Write("操 作 I P :" + getip + "<br>");
System.Web.HttpContext.Current.Response.Write("操 作 时 间:" + DateTime.Now.ToString() + "<br>");
System.Web.HttpContext.Current.Response.Write("操 作 页 面:" + System.Web.HttpContext.Current.Request.ServerVariables["URL"] + "<br>");
System.Web.HttpContext.Current.Response.Write("提 交 方 式: Cookies " + "<br>");
System.Web.HttpContext.Current.Response.Write("提 交 参 数:" + jk + "<br>");
System.Web.HttpContext.Current.Response.Write("提 交 数 据:" + System.Web.HttpContext.Current.Request.Cookies[getsqlkey].Value.ToLower() + "<br>");
System.Web.HttpContext.Current.Response.End();
}
}
}
}
}
}
[/b][/b]
[b][b]//页面过滤HTML[/b][/b]
[b][b]/// <summary>
/// 过滤标记
/// </summary>
/// <param name="NoHTML">包括HTML,脚本,数据库关键字,特殊字符的源码 </param>
/// <returns>已经去除标记后的文字</returns>
public static string NoHTML(string Htmlstring)
{
if (Htmlstring == null)
{
return "";
}
else
{
//删除脚本
Htmlstring = Regex.Replace(Htmlstring, @"<script[^>]*?>.*?</script>", "", RegexOptions.IgnoreCase);
//删除HTML
Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"<!--.*", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(quot|#34);", "\"", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(amp|#38);", "&", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(lt|#60);", "<", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(gt|#62);", ">", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(nbsp|#160);", " ", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(iexcl|#161);", "\xa1", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(cent|#162);", "\xa2", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(pound|#163);", "\xa3", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(copy|#169);", "\xa9", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"(\d+);", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "xp_cmdshell", "", RegexOptions.IgnoreCase);
//删除与数据库相关的词
Htmlstring = Regex.Replace(Htmlstring, "select", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "insert", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "delete from", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "count''", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "drop table", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "truncate", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "asc", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "mid", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "char", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "xp_cmdshell", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "exec master", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "net localgroup administrators", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, "and", "", RegexOptions.IgnoreCase);
return Htmlstring ;
}
}
[/b][/b]
[b][b]//文字转图片[/b][/b]
[b][b] void ConvertTextFileToImage(String textFile,String imageFile)
{
System.Drawing.Font drawFont = new System.Drawing.Font("宋体", 12);
System.Drawing.Bitmap image = new System.Drawing.Bitmap(1, 1);
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);
String text = System.IO.File.ReadAllText(textFile, Encoding.GetEncoding("GB2312"));
System.Drawing.SizeF sf = g.MeasureString(text, drawFont, 1024); //设置一个显示的宽度
image = new System.Drawing.Bitmap(image, new System.Drawing.Size(Convert.ToInt32(sf.Width), Convert.ToInt32(sf.Height)));
g = System.Drawing.Graphics.FromImage(image);
g.Clear(System.Drawing.Color.White);
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;
g.DrawString(text, drawFont, System.Drawing.Brushes.Black, new System.Drawing.RectangleF(new System.Drawing.PointF(0, 0), sf));
image.Save(imageFile, System.Drawing.Imaging.ImageFormat.Png);
g.Dispose();
image.Dispose();
}[/b][/b]
//调用
ConvertTextFileToImage(Server.MapPath("~/Log.txt"),Server.MapPath("~/Log.png"));
相关文章推荐
- asp.net/html清理页面缓存的方法。
- Asp.net 上传图片添半透明图片或文字水印的方法(一)
- asp.net 上传图片,生成缩略图,生成图片水印,文字水印
- asp.net 上传图片,生成缩略图,生成图片水印,文字水印
- Asp.net 上传图片添半透明图片或文字水印的方法(二)
- 使用ASP.net(C#)批量上传图片并自动生成缩略图,文字水印图,图片水印图
- asp.net下用Aspose.Words for .NET动态生成word文档中的图片或水印的方法(转)
- asp.net上传生成略铺图,文字水印图,图片水印图
- asp.net 上传图片,生成缩略图,生成图片水印,文字水印
- 使用ASP.net(C#)批量上传图片并自动生成缩略图,文字水印图,图片水印图
- asp.net 生成缩略图、为图片添加文字水印、图片水印等功能
- asp .net 为图片添加文字水印(内包含有加图片水印的方法,但尚未完善暂不能使用)
- 使用ASP.net(C#)批量上传图片并自动生成缩略图,文字水印图,图片水印图
- ASP.NET生成静态HTML页面的方法
- [网络收集]使用ASP.net(C#)批量上传图片并自动生成缩略图,文字水印图,图片水印图
- Asp.net动态生成html页面的一种方法
- asp.net下用Aspose.Words for .NET动态生成word文档中的图片或水印的方法
- ASP.NET 上传图片 生成文字 图片水印 (单图片水印 or 全覆盖图片水印)
- asp.net中将DataTable根据xslt生成html静态页面,支持分页
- Asp.net上传图片同时生成文字水印图,图片水印图,缩略图