asp.net中的一个C#sql注入方法到多个网站

tho*_*yer 0 c# asp.net security

我有多个网站,其中一些从POST获取参数,一些有JQuery AJAX处理程序,一些在查询字符串,一些在onclick asp:Button或ImageButton ..

我想制作一个方法,我可以放在我的所有网站,这将处理所有.我做了这个方法:

private void Si()
{     
    foreach (String key in Request.Params)
    {
        string temp = Request[key];

        string[] array_split_item = new string[] { "–", ";", "/*", "*/", "@@", "char", "nchar", "varchar", "nvarchar", "alter", "begin", "cast", "create", "cursor", "declare", "delete", "drop", "end", "exec", "execute", "fetch", "insert", "kill", "open", "select", "sys", "sysobjects", "syscolumns", "table", "update", "<script", "<//script>", "‘" };


        foreach (string strItem in array_split_item)
        {
            temp = temp.ToLower().Replace(strItem.ToLower(), "");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但有2个问题:

  1. 这是制作这种方法的最佳方法吗?

  2. 是否有可能知道某人是否已被"抓住"此方法试图注入某些东西?如果是这样,怎么样?

谢谢!

Mat*_*nen 8

不,这是一种"保护"SQL注入的可怕方式.不要这样做.它不仅非常不安全(你永远不会抓住所有东西),它也会严重打破用户输入.为什么不允许用户使用"之后","等"等字样?那些是非常常见的词.

使用参数化查询,无法通过用户输入注入任何代码.