有两个页面
页面1
前台<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
<a href="Default2.aspx?id=123">传递</a>
</div>
</form>
</body>后台
protected void Page_Load(object sender, EventArgs e)
{ }
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("Default2.aspx?id=123");
}页面2
前台<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
后台 protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack == false)
{
if (Request.QueryString["id"] != null)
{
this.Label1.Text = Request.QueryString["id"].ToString();
}
}
}
整个效果就是 页面1 点击按钮传递值在页面2显示这自然是没问题的然后 添加了一个类 ShuiyinHandler此类 继承了类 IHttpHandler
public class ShuiyinHandler:IHttpHandler
{
public bool IsReusable
{ get { return true; }
} public void ProcessRequest(HttpContext context)
{
string url = context.Request.Url.AbsoluteUri.ToLower();//这是当页面加载时候的那个url
string url2 = "select*dqwqdqdq";//实验用字符串 结果正确返回false
bool x= CheckStringRuleIsPassed(url);
bool x2 = CheckStringRuleIsPassed(url2);
} /// <summary>
/// 验证表单是否含有威胁性代码
/// </summary>
/// <param name="unbeknownString">未知的字符串</param>
/// <returns>是否可以通过</returns>
public static bool CheckStringRuleIsPassed(string unbeknownString)
{
string chk_String = "'‖select‖update‖chr‖delete‖%20from‖;‖insert‖mid‖master.‖set‖chr(37)‖%‖&‖*‖--‖drop‖#‖(‖)//(/*)//(*/)‖select‖set‖delete";
string[] chk_Array = chk_String.Split(new string[] { "‖" }, StringSplitOptions.None);
foreach (string chk in chk_Array)
{
if (unbeknownString.Contains(chk))
{
return false;
}
}
return true;
} private static bool IsTrue()
{
return true;
}
}
这个类的效果是每个页面一加载的时候 都会经过这类,在这类走上一回,,因为此类继承了 IHttpHandler
还有在webconfig中的<httpHandlers>节点之内加入下面的一行格式,才能使每个页面一加载就会经过
ShuiyinHandler类走一回,这样就可以去到当前加载页面的地址栏的url了,然后判断是否有敏感字符的存在
<httpHandlers> <add verb="*" path="*.aspx" type="ShuiyinHandler"/>
</httpHandlers>但是现在的问题是 <add verb="*" path="*.aspx" type="ShuiyinHandler"/>
这行固定格式一加上的话 打开页面1的全是空的 什么都不显示,就等于一个空页面 ,虽然类中取到了页面一的地址
但是页面一什么都不显示啊 那就没用了啊,于是我试试把<add verb="*" path="*.aspx" type="ShuiyinHandler"/>
这行删了, 这样页面一又正常显示了,,但是当前加载的页面就不会经过类了 ,我想要的功能就不能实现了 ,郁闷啊
就各位大虾帮帮 看下吧
页面1
前台<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
<a href="Default2.aspx?id=123">传递</a>
</div>
</form>
</body>后台
protected void Page_Load(object sender, EventArgs e)
{ }
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("Default2.aspx?id=123");
}页面2
前台<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
后台 protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack == false)
{
if (Request.QueryString["id"] != null)
{
this.Label1.Text = Request.QueryString["id"].ToString();
}
}
}
整个效果就是 页面1 点击按钮传递值在页面2显示这自然是没问题的然后 添加了一个类 ShuiyinHandler此类 继承了类 IHttpHandler
public class ShuiyinHandler:IHttpHandler
{
public bool IsReusable
{ get { return true; }
} public void ProcessRequest(HttpContext context)
{
string url = context.Request.Url.AbsoluteUri.ToLower();//这是当页面加载时候的那个url
string url2 = "select*dqwqdqdq";//实验用字符串 结果正确返回false
bool x= CheckStringRuleIsPassed(url);
bool x2 = CheckStringRuleIsPassed(url2);
} /// <summary>
/// 验证表单是否含有威胁性代码
/// </summary>
/// <param name="unbeknownString">未知的字符串</param>
/// <returns>是否可以通过</returns>
public static bool CheckStringRuleIsPassed(string unbeknownString)
{
string chk_String = "'‖select‖update‖chr‖delete‖%20from‖;‖insert‖mid‖master.‖set‖chr(37)‖%‖&‖*‖--‖drop‖#‖(‖)//(/*)//(*/)‖select‖set‖delete";
string[] chk_Array = chk_String.Split(new string[] { "‖" }, StringSplitOptions.None);
foreach (string chk in chk_Array)
{
if (unbeknownString.Contains(chk))
{
return false;
}
}
return true;
} private static bool IsTrue()
{
return true;
}
}
这个类的效果是每个页面一加载的时候 都会经过这类,在这类走上一回,,因为此类继承了 IHttpHandler
还有在webconfig中的<httpHandlers>节点之内加入下面的一行格式,才能使每个页面一加载就会经过
ShuiyinHandler类走一回,这样就可以去到当前加载页面的地址栏的url了,然后判断是否有敏感字符的存在
<httpHandlers> <add verb="*" path="*.aspx" type="ShuiyinHandler"/>
</httpHandlers>但是现在的问题是 <add verb="*" path="*.aspx" type="ShuiyinHandler"/>
这行固定格式一加上的话 打开页面1的全是空的 什么都不显示,就等于一个空页面 ,虽然类中取到了页面一的地址
但是页面一什么都不显示啊 那就没用了啊,于是我试试把<add verb="*" path="*.aspx" type="ShuiyinHandler"/>
这行删了, 这样页面一又正常显示了,,但是当前加载的页面就不会经过类了 ,我想要的功能就不能实现了 ,郁闷啊
就各位大虾帮帮 看下吧
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货