Aspx/Asp.net 防注入程序 V1.0
程序员文章站
2024-03-08 21:49:10
虽然说asp.net属于安全性高的脚本语言,但是也经常看到asp.net网站由于过滤不严造成注射.由于asp.net基本上配合mmsql数据库架设 如果权限过大的话很容易被...
虽然说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();
}
}
}
}
}
我写了两个版本,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();
}
}
}
}
}
上一篇: C# 数组查找与排序实现代码
推荐阅读
-
asp.net Silverlight应用程序中获取载体aspx页面参数
-
asp.net利用HttpModule实现防sql注入
-
asp.net(C#)防sql注入组件的实现代码
-
在Global.asax文件里实现通用防SQL注入漏洞程序(适应于post/get请求)
-
在Global.asax文件里实现通用防SQL注入漏洞程序(适应于post/get请求)
-
asp.net使用ODP即oracle连接方式的的防注入登录验证程序
-
asp.net使用ODP即oracle连接方式的的防注入登录验证程序
-
PHP防注入之程序里的敏感信息
-
ASP.NET网站程序防SQL注入式攻击方法
-
php防sql注入程序代码_PHP教程