, даже если подготовленные утверждения правильно используются во всем собственном коде веб-приложения, ошибки SQL-инъекции могут все еще существовать, если компоненты кода базы данных строят запросы с пользовательского ввода небезопасным образом. Ниже приведен пример хранимой процедуры, которая уязвима для SQL-инъекции в параметре @name:
CREATE PROCEDURE show_current_orders
(@name varchar(400) = NULL)
AS
DECLARE @sql nvarchar(4000)
SELECT @sql = ‘SELECT id_num, searchstring FROM searchorders WHERE ‘ +
‘searchstring = ‘’’ + @name + ‘’’’;
EXEC (@sql)
GO
Даже если приложение передает сохраненное пользователю значение имени в хранимую процедуру безопасным образом , сама процедура объединяет это непосредственно в динамический запрос и поэтому уязвима.
Microsoft обеспечивает пример , где они в основном прикрепляют rtf текст в RichTextBox
и затем читают .Text
свойство... это чувствует себя несколько топорным, но это работает.
static public string ConvertToText(string rtf)
{
using(RichTextBox rtb = new RichTextBox())
{
rtb.Rtf = rtf;
return rtb.Text;
}
}
Если Вы хотите чистую версию кода, можно проанализировать rtf сами и сохранить только текстовые биты. Это - немного работы, но не очень трудная работа - файлы RTF имеют очень простой синтаксис. Read об этом в спецификации .
RTF