مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

ghasam91

عضویت از 1394/10/06

مشکل امنیتی SQL injection

  • جمعه 30 مهر 1395
  • 15:38
تشکر میکنم

سلام
من توی صفحه جستجوم 2 تا مقدار رو میگیرم از کاربر که یکیش DropDownList هستش که لیست شهرهای دارای تورهای تعریف شده در دیتابیسمه.یکیم یک تکس باکس هستش که کلمه ی مورد جستجو رو میگرده که اگه مقدار هم وارد نشه فقط لیست تورهای شهر انتخاب شده درDropDownList رو نشون میده.
میگن که در بخش جستجوی تور من مشکل امنیتیSQL injection وجود دارد ولی متاسفانه من بلد نیستم رفعش کنم ممنون میشم کمکم کنین
این کدای مربوط به دکمه جستجوم

 protected void btnSearch_Click(object sender, EventArgs e)
    {
        GridView2.EmptyDataText = "جستجو نتیجه ای در بر نداشت ، لطفا جستجو را با گزینه های بیشتری انجام دهید";
        if (txtName.Text.Trim().Length > 0) 
        {
            SqlDataSource2.SelectCommand = "SELECT * FROM [tProducts] WHERE (fCodeGroup = '" + DropDownList1.SelectedValue.Trim() + "'  ) and (fName  LIKE '%" + txtName.Text.Trim() + "%' )  ";
        }
        else
        {
            SqlDataSource2.SelectCommand = "SELECT * FROM [tProducts] WHERE (fCodeGroup = '" + DropDownList1.SelectedValue.Trim() + "'  ) ";
        }

    }

 

پاسخ های این پرسش

تعداد پاسخ ها : 3 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 30 مهر 1395
  • 17:59

شما برای جلوگیری از حملات باید پارامتر دهید کنید

کد شما الان نا امن هست

پیاده سازی Sql Injection با استفاده از Query String و روش جلوگیری از آن

 

کاربر سایت

ghasam91

عضویت از 1394/10/06

  • جمعه 30 مهر 1395
  • 20:01

سلام من کدام رو به صورت زیر اصلاح کردم ولی خطا میده.میتونید بگید چیکار باید انجام بدم؟؟

 protected void btnSearch_Click(object sender, EventArgs e)
    {
        GridView2.EmptyDataText = "جستجو نتیجه ای در بر نداشت ، لطفا جستجو را با گزینه های بیشتری انجام دهید";
        if (txtName.Text.Trim().Length > 0) 
        {

            //SqlDataSource2.SelectCommand = "SELECT * FROM [tProducts] WHERE (fCodeGroup = '" + DropDownList1.SelectedValue.Trim() + "'  ) and (fName  LIKE '%" + txtName.Text.Trim() + "%' )  ";
            //select * from tproducts where fcodegroup=@fcodegroup and fname like @fname
            SqlDataSource2.SelectCommand = "select * from tProducts where fCodeGroup=@fCodeGroup and fname like @fname";

            SqlDataSource2.SelectParameters.Clear();
            SqlDataSource2.SelectParameters.Add("@fCodeGroup", DropDownList1.SelectedValue.Trim());
            SqlDataSource2.SelectParameters.Add("@fname", txtName.Text.Trim());

        }
        else
        {
            //SqlDataSource2.SelectCommand = "SELECT * FROM [tProducts] WHERE (fCodeGroup = '" + DropDownList1.SelectedValue.Trim() + "'  ) ";
            SqlDataSource2.SelectCommand = "select * from tProducts where fCodeGroup=@fCodeGroup";

            SqlDataSource2.SelectParameters.Clear();
            SqlDataSource2.SelectParameters.Add("@fCodeGroup", DropDownList1.SelectedValue.Trim());
            }

    }

اینم خطا

Must declare the scalar variable "@fCodeGroup".

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 1 آبان 1395
  • 08:56
SqlDataSource1.SelectParameters.Add("userId", userId.ToString());

SqlDataSource1.SelectCommand = "SELECT items.name, items.id FROM items INNER JOIN users_items ON items.id = users_items.id WHERE (users_items.user_id = @userId) ORDER BY users_items.date DESC"

 

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)