Member 12986391 Ответов: 1

При передаче значения из SQL custom's, его is show имеет custom' s


У меня есть магазин proc, в котором я получаю название компании , одна из компаний имеет Апостроф, например-custom'S, но на стороне сервера я получаю custom & # 3 9; s , следовательно, это дает мне ошибку


public ActionResult OfferDocument()
        {
            List<IIFL_IB_Prospects> lstProspects = new List<IIFL_IB_Prospects>();
            InvestmentBankingParent IBParent = new InvestmentBankingParent();
            SessionParams.IBRenderMode = "0";
            DataSet ds = new DataSet();
            IIFL_IB_Prospects IIFL_IB_Prospects;
            setUserName();
            try
            {
                ds = getProspects();

                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    IIFL_IB_Prospects = new IIFL_IB_Prospects();
                    IIFL_IB_Prospects.CompanyName = Server.HtmlEncode(Convert.ToString(dr["companyname"]));
                    lstProspects.Add(IIFL_IB_Prospects);
                }


                

                IBParent.Prospects = lstProspects;
                IBParent.recentTransaction = getKeyTransaction();
                IBParent.testimonials = getClientTestimonials();
            }
            catch (Exception ex)
            {
                string msg = ex.Message + " at " + DateTime.Now + " From RecentTransaction";
                LogObj.writeLog("ErrorLogIB.txt", msg);              
            }

            obj.trackUser("View Investment Banking/Offer document");
            //return View(new IIFL_IB_Prospects(lstProspects));
            return View(IBParent);
        }


Что я уже пробовал:

У меня есть
IIFL_IB_Prospects.CompanyName=Server.HtmlEncode(Convert.ToString(dr["companyname"]));

1 Ответов

Рейтинг:
1

OriginalGriff

Вероятно - и не видя кода, который вы используете для доступа или хранения данных в БД, мы не можем сказать наверняка - это связано с тем, что вы совершаете огромную ошибку и оставляете свою БД широко открытой для SQL-инъекций. При объединении строк в SQL-команду:

string sql = "INSERT INTO MyTable (CompanyName) VALUES ('" + txtCompanyName.Text + "')";
Вы оба широко открыты для пользователя, делающего с вашей базой данных все, что ему нравится, включая ее удаление, просто набрав текстовое поле, и для таких проблем, как эта, где Апостроф в названии компании завершает строку SQL и вызывает проблемы.

Никогда не объединяйте строки для построения SQL-команды. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого используйте параметризованные запросы. Скорее всего, другие проблемы исчезнут в то же время, как только вы исправите свои данные БД.