Любое приложение, которое отправляет данные в вашу таблицу, должно исключить это как хорошую практику. Конечно, не все приложения делают.
Если вы не используете хранимые процедуры, я предлагаю вам создать триггер в таблице базы данных для INSERT и UPDATES и проверить, если какие-либо недопустимые строки пытаются ввести, если они делают, отклонить строку. В SQL есть некоторые ключевые слова для работы со строками, такие как CHARINDEX, я лично проверял бы на наличие общих символов, таких как '\', ';', '$', '&' и т. Д.
Я бы также попытался отфильтровать все, что уже вошло в ваши таблицы, и удалить строки:
DELETE FROM Table
WHERE Field LIKE '%<script>%'
В качестве альтернативы, если вы используете хранимую процедуру и передаете каждое поле в качестве параметра, эти символы не будут попадать в вашу базу данных.
CREATE TRIGGER [dbo].[tr_CheckSQLInjection]
ON [dbo].[Notes]
FOR INSERT, UPDATE
AS
BEGIN
BEGIN TRANSACTION T_CHECKCHARACTERS
BEGIN TRY
-- YOUR LOGIC TO STRIP OUT THE CHARACTERS HERE
COMMIT TRANSACTION T_CHECKCHARACTERS
END TRY
BEGIN CATCH
RAISERROR('UNABLE TO COMMIT THE TRANSACTION', 1, 1)
ROLLBACK TRANSACTION T_CHECKCHARACTERS
END CATCH
END