频道栏目
首页 > 资讯 > 网站安全 > 正文

ASPX防注入程序 V1.0

09-07-30        来源:[db:作者]  
收藏   我要投稿

本文可以在此和作者交流http://bbs.2cto.com/read.php?tid=96014

虽然说ASP.NET属于安全性高的脚本语言,但是也经常看到ASP.NET网站由于过滤不严造成注射.由于ASP.NET基本上配合MMSQL数据库架设 如果权限过大的话很容易被攻击. 再者在网络上找不到好的ASP.NET防注射脚本,所以就自己写了个. 在这里共享出来旨在让程序员免除SQL注入的困扰.

我写了两个版本,VB.NET和C#版本方便不同程序间使用.





描述:
       1. XP + IIS5.1 + Access + MSSQL2000 下测试通过。
       2. 由于考虑到ASPX大多数和MMSQL数据库配合使用,在此增加了MMSQL关键字。
      3. 放到数据库连接代码处即可,和ASP用法类似。


C#Code:

    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://hi.baidu.com/ahhacker86 \n\nBy:夢幻★剑客 && JK1986);</" + "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++)
                {
              

相关TAG标签
上一篇:英特尔大量台式机和服务器主板BIOS出现漏洞
下一篇:Cookies 注入详解与指令
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站