当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > Aspx/Asp.net 防注入程序 V1.0

ASP.NET
Visual Studio.Net 内幕(7)
.Net 2.0 原汁原味读取注册表
ASP.NET 2.0中预设的cookie
ASP.NET:一段比较经典的多线程学习代码
ASP.NET2.0服务器控件之自定义状态管理
Asp.net给站点某目录增加Aspnet用户
ASP.NET技巧:请求网址并解析返回的html
在Asp.net用C#建立动态Excel
ASP.NET2.0:页面中链入的CSS、js文件带中文时需注意
ASP.NET技巧:数据岛出到Excel最为简易的方法
第一次用.net2.0 LOGIN登陆控件的困惑和解决方法
在ASP.net中保存/取出图片入/从SQL数据库
ASP.NET技巧:做个DataList可分页的数据源
在.NET中利用委托实现窗体间通信
在.NET2.0中使用自定义事务操作
解决 ASP.NET中目录访问权限的问题
ASP.Net防止刷新自动触发事件的解决方案
白刃之战:PHP vs. ASP.NET(节选)-架构比较
C#中使用SendMessage
提取HTML代码中文字的C#函数

ASP.NET 中的 Aspx/Asp.net 防注入程序 V1.0


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-11   浏览: 195 ::
收藏到网摘: n/a

asp下有人写了防注入的程序,这次看到了一个asp.net的特提供给大家参考。 虽然说ASP.NET属于安全性高的脚本语言,但是也经常看到ASP.NET网站由于过滤不严造成注射.由于ASP.NET基本上配合MMSQL数据库架设 如果权限过大的话很容易被攻击. 再者在网络上找不到好的ASP.NET防注射脚本,所以就自己写了个. 在这里共享出来旨在让程序员免除SQL注入的困扰.
我写了两个版本,VB.NET和C#版本方便不同程序间使用.
描述:
1. XP + IIS5.1 + Access + MSSQL2000 下测试通过。
2. 由于考虑到ASPX大多数和MSSQL数据库配合使用,在此增加了MSSQL关键字。
3. 放到数据库连接代码处即可,和ASP用法类似。
复制代码 代码如下:

public void JK1986_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 (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#版本 )站长网提示您,请勿提交非法字符!↓\\n\\nBloghttp://www.safe5.com [url=file://\\n\\nBy]\\n\\nBy[/url]:Jack');</" + "script>");
Response.Write("非法操作!系统做了如下记录 ↓" + "<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("操 作 时 间:" + DateTime.Now.ToString() + "<br>");
Response.Write("操 作 页 面:" + Page.Request.ServerVariables["URL"] + "<br>");
Response.Write("提 交 方 式:P O S T " + "<br>");
Response.Write("提 交 参 数:" + jk + "<br>");
Response.Write("提 交 数 据:" + 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#版本 )站长安全网提示您,请勿提交非法字符!↓\\n\\nBloghttp://www.safe5.com [url=file://\\n\\nBy]\\n\\nBy[/url]:Jack');</" + "script>");
Response.Write("非法操作!系统做了如下记录 ↓" + "<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("操 作 时 间:" + DateTime.Now.ToString() + "<br>");
Response.Write("操 作 页 面:" + Page.Request.ServerVariables["URL"] + "<br>");
Response.Write("提 交 方 式:G E T " + "<br>");
Response.Write("提 交 参 数:" + jk + "<br>");
Response.Write("提 交 数 据:" + 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#版本 )站长安全网提示您,请勿提交非法字符!↓\\n\\nBloghttp://www.safe5.com [url=file://\\n\\nBy]\\n\\nBy[/url]:Jack');</" + "script>");
Response.Write("非法操作!系统做了如下记录 ↓" + "<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("操 作 时 间:" + DateTime.Now.ToString() + "<br>");
Response.Write("操 作 页 面:" + Page.Request.ServerVariables["URL"] + "<br>");
Response.Write("提 交 方 式: Cookies " + "<br>");
Response.Write("提 交 参 数:" + jk + "<br>");
Response.Write("提 交 数 据:" + Page.Request.Cookies[getsqlkey].Value.ToLower() + "<br>");
Response.End();
}
}
}
}
}