【问题标题】:Sql Injection problemSql注入问题
【发布时间】:2011-04-27 13:55:02
【问题描述】:

我有 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           
    }

}

【问题讨论】:

  • 如果您担心 sql 注入,请向我们展示实际与 db 对话的代码。不要跳过那部分。
  • 看来您目前正在尝试比较 A != A 换句话说我会(这只是一个猜测)假设 HttpContext.Current.Request.Url.Authority.ToString() 是由于“当前”(上下文),实际上等于上下文。
  • @Ramhound:嗯,你说得对,徒劳的尝试。

标签: c# asp.net httphandler


【解决方案1】:

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

可以伪造 HTTP 请求,使其看起来与来自您的域完全相同,但实际上并非如此。所以唯一的办法就是使用一些秘密。

【讨论】:

  • 是的,但我没有特定用户,它是一个新闻脚本。
  • @Israa Abd,在这种情况下,您无法区分您网站的用户和其他用户。 我的网站的用户 没有这样的概念,除非您向他们提供一些秘密以识别他们。正如我所说,任何人都可以伪造 HTTP 请求。
  • 同意,任何类型的安全都首先需要身份验证。您需要考虑计划如何识别用户,然后围绕该概念编写代码。
  • 我不希望任何用户或任何访客看到该文件。我只是用它来使用 ajax 插入数据。
  • @Israa Abd,是的,但 AJAX 表示 javascript,javascript 表示客户端,客户端表示用户。因此,归根结底,是用户发送请求。所以我们回到我的第一条评论:如果您想阻止任何人向您的站点发送 HTTP 请求,您需要对这些用户进行身份验证,就这么简单。
【解决方案2】:

您还可以为您处理 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

我知道这不是专门为您提供的解决方案,但我希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    • 2018-03-29
    • 2023-02-03
    • 2021-10-13
    • 1970-01-01
    相关资源
    最近更新 更多