Sql注入问题

时间:2011-04-27 13:55:02

标签: c# asp.net httphandler

我有HttpHandler页面,我用它做一些包括使用DB的东西。我需要能够阻止人们访问此文件,并确保信息的路径是我的网站,而不是使用Processrequest实现此目的的另一个网页。

    public void ProcessRequest (HttpContext context) {


    if (context.Request.Url.Authority.ToString() != HttpContext.Current.Request.Url.Authority.ToString())
        return;
    context.Response.ContentType = "text/plain";
    string str = context.Request.Form["recordsArray[]"].ToString();
    char[] delimiters = new char[] { ',', ';' };
    string[] arr = str.Split(delimiters);

    for (int i = 0; i < arr.Length; i++)
    {
         Functions.Add(new tab(arr[i])); // insert records into table Tabs => int id, string name           
    }

}

2 个答案:

答案 0 :(得分:3)

如果您想阻止人们正常访问某些资源,请使用身份验证来保护此资源:您向授权用户授予用户名/密码,以便您将其与未经授权的用户区分开来。

可以伪造HTTP请求,使其看起来就像是来自您的域,而实际上并非如此。所以唯一的方法是使用一些秘密。

答案 1 :(得分:0)

你也可以为你处理SQL注入。

Linq to sql:http://weblogs.asp.net/scottgu/archive/2007/09/07/linq-to-sql-part-9-using-a-custom-linq-expression-with-the-lt-asp-linqdatasource-gt-control.aspx

或者对于更简单的东西,你可以只使用SQL参数(这是Linq to SQL使用的):

(简短指南):http://www.sharpdeveloper.net/content/archive/2007/05/25/creating-sqlparameters-best-practices.aspx 或者在这里 http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter.aspx

我知道这不是一个特别适合你的解决方案,但我希望有所帮助。