Aspx/Asp.net 防注入程序 V1.0
更新時(shí)間:2009年10月03日 01:51:33 作者:
asp下有人寫了防注入的程序,這次看到了一個(gè)asp.net的特提供給大家參考。
雖然說(shuō)ASP.NET屬于安全性高的腳本語(yǔ)言,但是也經(jīng)??吹紸SP.NET網(wǎng)站由于過(guò)濾不嚴(yán)造成注射.由于ASP.NET基本上配合MMSQL數(shù)據(jù)庫(kù)架設(shè) 如果權(quán)限過(guò)大的話很容易被攻擊. 再者在網(wǎng)絡(luò)上找不到好的ASP.NET防注射腳本,所以就自己寫了個(gè). 在這里共享出來(lái)旨在讓程序員免除SQL注入的困擾.
我寫了兩個(gè)版本,VB.NET和C#版本方便不同程序間使用.
描述:
1. XP + IIS5.1 + Access + MSSQL2000 下測(cè)試通過(guò)。
2. 由于考慮到ASPX大多數(shù)和MSSQL數(shù)據(jù)庫(kù)配合使用,在此增加了MSSQL關(guān)鍵字。
3. 放到數(shù)據(jù)庫(kù)連接代碼處即可,和ASP用法類似。
public void JK1986_CheckSql()
{
string jk1986_sql = "exec夢(mèng)select夢(mèng)drop夢(mèng)alter夢(mèng)exists夢(mèng)union夢(mèng)and夢(mèng)or夢(mèng)xor夢(mèng)order夢(mèng)mid夢(mèng)asc夢(mèng)execute夢(mèng)xp_cmdshell夢(mèng)insert夢(mèng)update夢(mèng)delete夢(mèng)join夢(mèng)declare夢(mèng)char夢(mèng)sp_oacreate夢(mèng)wscript.shell夢(mèng)xp_regwrite夢(mèng)'夢(mèng);夢(mèng)--夢(mèng)%";
string[] jk_sql = jk1986_sql.Split('夢(mèng)');
foreach (string jk in jk_sql)
{
// -----------------------防 Post 注入-----------------------
if (Page.Request.Form != null)
{
for (int k = 0; k < Page.Request.Form.Count; k++)
{
string getsqlkey = Page.Request.Form.Keys[k];
string getip;
if (Page.Request.Form[getsqlkey].ToLower().Contains(jk) == true)
{
Response.Write("<script Language=JavaScript>alert('ASP.NET( C#版本 )站長(zhǎng)網(wǎng)提示您,請(qǐng)勿提交非法字符!↓\\n\\nBloghttp://www.safe5.com [url=file://\\n\\nBy]\\n\\nBy[/url]:Jack');</" + "script>");
Response.Write("非法操作!系統(tǒng)做了如下記錄 ↓" + "<br>");
if (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null )
{
getip = this.Page.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
}
else
{
getip = Page.Request.ServerVariables["REMOTE_ADDR"];
}
Response.Write("操 作 I P :" + getip + "<br>");
Response.Write("操 作 時(shí) 間:" + DateTime.Now.ToString() + "<br>");
Response.Write("操 作 頁(yè) 面:" + Page.Request.ServerVariables["URL"] + "<br>");
Response.Write("提 交 方 式:P O S T " + "<br>");
Response.Write("提 交 參 數(shù):" + jk + "<br>");
Response.Write("提 交 數(shù) 據(jù):" + Page.Request.Form[getsqlkey].ToLower() + "<br>");
Response.End();
}
}
}
// -----------------------防 GET 注入-----------------------
if (Page.Request.QueryString != null)
{
for (int k = 0; k < Page.Request.QueryString.Count; k++)
{
string getsqlkey = Page.Request.QueryString.Keys[k];
string getip;
if (Page.Request.QueryString[getsqlkey].ToLower().Contains(jk) == true)
{
Response.Write("<script Language=JavaScript>alert('ASP.NET( C#版本 )站長(zhǎng)安全網(wǎng)提示您,請(qǐng)勿提交非法字符!↓\\n\\nBloghttp://www.safe5.com [url=file://\\n\\nBy]\\n\\nBy[/url]:Jack');</" + "script>");
Response.Write("非法操作!系統(tǒng)做了如下記錄 ↓" + "<br>");
if (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null )
{
getip = this.Page.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
}
else
{
getip = Page.Request.ServerVariables["REMOTE_ADDR"];
}
Response.Write("操 作 I P :" + getip + "<br>");
Response.Write("操 作 時(shí) 間:" + DateTime.Now.ToString() + "<br>");
Response.Write("操 作 頁(yè) 面:" + Page.Request.ServerVariables["URL"] + "<br>");
Response.Write("提 交 方 式:G E T " + "<br>");
Response.Write("提 交 參 數(shù):" + jk + "<br>");
Response.Write("提 交 數(shù) 據(jù):" + Page.Request.QueryString[getsqlkey].ToLower() + "<br>");
Response.End();
}
}
}
// -----------------------防 Cookies 注入-----------------------
if (Page.Request.Cookies != null)
{
for (int k = 0; k < Page.Request.Cookies.Count; k++)
{
string getsqlkey = Page.Request.Cookies.Keys[k];
string getip;
if (Page.Request.Cookies[getsqlkey].Value.ToLower().Contains(jk) == true)
{
Response.Write("<script Language=JavaScript>alert('ASP.NET( C#版本 )站長(zhǎng)安全網(wǎng)提示您,請(qǐng)勿提交非法字符!↓\\n\\nBloghttp://www.safe5.com [url=file://\\n\\nBy]\\n\\nBy[/url]:Jack');</" + "script>");
Response.Write("非法操作!系統(tǒng)做了如下記錄 ↓" + "<br>");
if (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null )
{
getip = this.Page.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
}
else
{
getip = Page.Request.ServerVariables["REMOTE_ADDR"];
}
Response.Write("操 作 I P :" + getip + "<br>");
Response.Write("操 作 時(shí) 間:" + DateTime.Now.ToString() + "<br>");
Response.Write("操 作 頁(yè) 面:" + Page.Request.ServerVariables["URL"] + "<br>");
Response.Write("提 交 方 式: Cookies " + "<br>");
Response.Write("提 交 參 數(shù):" + jk + "<br>");
Response.Write("提 交 數(shù) 據(jù):" + Page.Request.Cookies[getsqlkey].Value.ToLower() + "<br>");
Response.End();
}
}
}
}
}
我寫了兩個(gè)版本,VB.NET和C#版本方便不同程序間使用.
描述:
1. XP + IIS5.1 + Access + MSSQL2000 下測(cè)試通過(guò)。
2. 由于考慮到ASPX大多數(shù)和MSSQL數(shù)據(jù)庫(kù)配合使用,在此增加了MSSQL關(guān)鍵字。
3. 放到數(shù)據(jù)庫(kù)連接代碼處即可,和ASP用法類似。
復(fù)制代碼 代碼如下:
public void JK1986_CheckSql()
{
string jk1986_sql = "exec夢(mèng)select夢(mèng)drop夢(mèng)alter夢(mèng)exists夢(mèng)union夢(mèng)and夢(mèng)or夢(mèng)xor夢(mèng)order夢(mèng)mid夢(mèng)asc夢(mèng)execute夢(mèng)xp_cmdshell夢(mèng)insert夢(mèng)update夢(mèng)delete夢(mèng)join夢(mèng)declare夢(mèng)char夢(mèng)sp_oacreate夢(mèng)wscript.shell夢(mèng)xp_regwrite夢(mèng)'夢(mèng);夢(mèng)--夢(mèng)%";
string[] jk_sql = jk1986_sql.Split('夢(mèng)');
foreach (string jk in jk_sql)
{
// -----------------------防 Post 注入-----------------------
if (Page.Request.Form != null)
{
for (int k = 0; k < Page.Request.Form.Count; k++)
{
string getsqlkey = Page.Request.Form.Keys[k];
string getip;
if (Page.Request.Form[getsqlkey].ToLower().Contains(jk) == true)
{
Response.Write("<script Language=JavaScript>alert('ASP.NET( C#版本 )站長(zhǎng)網(wǎng)提示您,請(qǐng)勿提交非法字符!↓\\n\\nBloghttp://www.safe5.com [url=file://\\n\\nBy]\\n\\nBy[/url]:Jack');</" + "script>");
Response.Write("非法操作!系統(tǒng)做了如下記錄 ↓" + "<br>");
if (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null )
{
getip = this.Page.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
}
else
{
getip = Page.Request.ServerVariables["REMOTE_ADDR"];
}
Response.Write("操 作 I P :" + getip + "<br>");
Response.Write("操 作 時(shí) 間:" + DateTime.Now.ToString() + "<br>");
Response.Write("操 作 頁(yè) 面:" + Page.Request.ServerVariables["URL"] + "<br>");
Response.Write("提 交 方 式:P O S T " + "<br>");
Response.Write("提 交 參 數(shù):" + jk + "<br>");
Response.Write("提 交 數(shù) 據(jù):" + Page.Request.Form[getsqlkey].ToLower() + "<br>");
Response.End();
}
}
}
// -----------------------防 GET 注入-----------------------
if (Page.Request.QueryString != null)
{
for (int k = 0; k < Page.Request.QueryString.Count; k++)
{
string getsqlkey = Page.Request.QueryString.Keys[k];
string getip;
if (Page.Request.QueryString[getsqlkey].ToLower().Contains(jk) == true)
{
Response.Write("<script Language=JavaScript>alert('ASP.NET( C#版本 )站長(zhǎng)安全網(wǎng)提示您,請(qǐng)勿提交非法字符!↓\\n\\nBloghttp://www.safe5.com [url=file://\\n\\nBy]\\n\\nBy[/url]:Jack');</" + "script>");
Response.Write("非法操作!系統(tǒng)做了如下記錄 ↓" + "<br>");
if (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null )
{
getip = this.Page.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
}
else
{
getip = Page.Request.ServerVariables["REMOTE_ADDR"];
}
Response.Write("操 作 I P :" + getip + "<br>");
Response.Write("操 作 時(shí) 間:" + DateTime.Now.ToString() + "<br>");
Response.Write("操 作 頁(yè) 面:" + Page.Request.ServerVariables["URL"] + "<br>");
Response.Write("提 交 方 式:G E T " + "<br>");
Response.Write("提 交 參 數(shù):" + jk + "<br>");
Response.Write("提 交 數(shù) 據(jù):" + Page.Request.QueryString[getsqlkey].ToLower() + "<br>");
Response.End();
}
}
}
// -----------------------防 Cookies 注入-----------------------
if (Page.Request.Cookies != null)
{
for (int k = 0; k < Page.Request.Cookies.Count; k++)
{
string getsqlkey = Page.Request.Cookies.Keys[k];
string getip;
if (Page.Request.Cookies[getsqlkey].Value.ToLower().Contains(jk) == true)
{
Response.Write("<script Language=JavaScript>alert('ASP.NET( C#版本 )站長(zhǎng)安全網(wǎng)提示您,請(qǐng)勿提交非法字符!↓\\n\\nBloghttp://www.safe5.com [url=file://\\n\\nBy]\\n\\nBy[/url]:Jack');</" + "script>");
Response.Write("非法操作!系統(tǒng)做了如下記錄 ↓" + "<br>");
if (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null )
{
getip = this.Page.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
}
else
{
getip = Page.Request.ServerVariables["REMOTE_ADDR"];
}
Response.Write("操 作 I P :" + getip + "<br>");
Response.Write("操 作 時(shí) 間:" + DateTime.Now.ToString() + "<br>");
Response.Write("操 作 頁(yè) 面:" + Page.Request.ServerVariables["URL"] + "<br>");
Response.Write("提 交 方 式: Cookies " + "<br>");
Response.Write("提 交 參 數(shù):" + jk + "<br>");
Response.Write("提 交 數(shù) 據(jù):" + Page.Request.Cookies[getsqlkey].Value.ToLower() + "<br>");
Response.End();
}
}
}
}
}
相關(guān)文章
MVC5 + EF6 + Bootstrap3 (11) 實(shí)現(xiàn)排序、搜索、分頁(yè)
本篇文章主要介紹了MVC5 + EF6 + Bootstrap3 (11) 實(shí)現(xiàn)排序、搜索、分頁(yè),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考2016-12-12WeakReference(弱引用)讓GC需要時(shí)回收對(duì)象
我們平常用的都是對(duì)象的強(qiáng)引用,如果有強(qiáng)引用存在,GC是不會(huì)回收對(duì)象的,我們能不能同時(shí)保持對(duì)對(duì)象的引用,而又可以讓GC需要的時(shí)候回收這個(gè)對(duì)象呢?本文將為您詳細(xì)解答,需要了解的朋友可以參考下2012-12-12擴(kuò)展方法ToJSON() and ParseJSON()
AJAX編程經(jīng)常需要Object<=>JSON之間轉(zhuǎn)換,寫了二個(gè)擴(kuò)展方法: public static string ToJSON(this object obj) public static T ParseJSON<T>(this string str)2008-03-03Discuz!NT數(shù)據(jù)庫(kù)讀寫分離方案詳解
Discuz!NT這個(gè)產(chǎn)品在其企業(yè)版中提供了對(duì)‘讀寫分離’機(jī)制的支持,使對(duì)CPU及內(nèi)存消耗嚴(yán)重的操作(CUD)被 分離到一臺(tái)或幾臺(tái)性能很高的機(jī)器上,而將頻繁讀取的操作(select)放到幾臺(tái)配置較低的機(jī)器上,然后通過(guò)‘事務(wù) 發(fā)布訂閱機(jī)制’,實(shí)現(xiàn)了在多個(gè)sqlserver數(shù)據(jù)庫(kù)之間快速高效同步數(shù)據(jù),從而達(dá)到了將‘讀寫請(qǐng)求’按實(shí)際負(fù)載 情況進(jìn)行均衡分布的效果。2010-06-06ajaxToolkit:CalendarExtender演示與實(shí)現(xiàn)代碼
Ajax的CalenderExtender的日期選擇實(shí)現(xiàn)介紹,感興趣的你可以了解下,就當(dāng)是鞏固知識(shí),希望本文對(duì)你有所幫助2013-01-01ASP.NET將文件寫到另一服務(wù)器(圖文教程)及注意事項(xiàng)
有時(shí)我們需要將來(lái)自于客戶端的文件上傳到WEB服務(wù)器端,并在服務(wù)端將文件存儲(chǔ)到第三方文件服務(wù)器中存儲(chǔ),既然有需求,那就有實(shí)現(xiàn)了,感興趣的你可以了解此文,或許對(duì)你學(xué)習(xí)asp.net 起到很好的作用哦2013-01-01.net core 6.0 通過(guò)依賴注入注冊(cè)和使用上下文服務(wù)的教程
在.NET Core 6.0 中,獲取上下文的方式取決于您使用的技術(shù)棧和具體的應(yīng)用程序類型,這篇文章主要介紹了.net core 6.0 通過(guò)依賴注入注冊(cè)和使用上下文服務(wù)的教程,需要的朋友可以參考下2023-12-12