bahman01 Ответов: 2

Как я могу преобразовать символ 'в символ" в C#?


Для отправки строки sql в C# мне нужно преобразовать ' характер внутри внутри строки " характер.

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

Я попытался заменить символы в C#, но не смог.

2 Ответов

Рейтинг:
5

Richard Deeming

Цитата:
Для отправки строки sql в C# мне нужно преобразовать символ 'внутри строки в символ".

Нет, не знаешь.

Основываясь на описании, вы пытаетесь "экранировать" специальные символы в SQL-запросе, поскольку используете конкатенацию строк для добавления параметров в запрос. Но это делает ваш код уязвимым для SQL-инъекция[^].

Вместо этого вам нужно использовать параметризованный запрос. Таким образом, вам не нужно беспокоиться о "специальных" символах, и вы можете просто отправить значения без изменений.

Например:
string theName = "Seamus O'Leary";

using (var connection = new SqlConnection("..."))
using (var command = new SqlCommand("SELECT SomeColumns FROM YourTable WHERE SomeName = @Name And SomeDate >= @MinDate", connection))
{
    command.Parameters.AddWithValue("@Name", theName);
    command.Parameters.AddWithValue("@MinDate", DateTime.Today);
    
    ...
}


Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов / OWASP[^]


bahman01

Но для sql этот способ лучше всего подходит, потому что visual studio знает, как конвертировать. Это лучше, чем менять символы вручную.
Спасибо, Ричард!

Рейтинг:
17

#realJSOP

str = str.Replace("'", "\"");


Richard Deeming

Это отвечает на непосредственный вопрос, но не решает проблему уязвимости SQL-инъекции, которую создает OP. :)

#realJSOP

Я всегда стремлюсь к мгновенному удовлетворению.

bahman01

Я знаю о sql-инъекции. Я хочу использовать в некоторых случаях для форматирования строки.

Jochen Arndt

Существует также метод, который заменяет символы:
ул. ул. =.Заменить('\", '"');

bahman01

Большое вам спасибо!