Декодирование HTML тегов в SQL
Экранирование HTML в SQL: простая защита от XSS
Эта функция — ваш базовый щит от XSS-атак на уровне базы данных. Она не даст пользователю сохранить HTML-теги в тексте. Просто, но эффективно.
Как это работает? Функция заменяет опасные символы на их безопасные HTML-сущности:
&→&<→<>→>
Важный нюанс: порядок замены имеет значение. Сначала меняем амперсанд, потом угловые скобки. Иначе < превратится в < — полная ерунда.
Пример работы
Допустим, пользователь ввёл:
После обработки функцией получим: <script>alert('XSS')</script>
Браузер покажет это как обычный текст, а не выполнит скрипт. Работает безотказно.
Код функции
ALTER FUNCTION [dbo].[str_htmlEncode]
(
@UnEncoded as varchar(max)
)
RETURNS varchar(max)
AS
BEGIN
DECLARE @Encoded as varchar(500)
-- order is important here. Replace the amp first, then the lt and gt.
-- otherwise the < will become <
SELECT @Encoded =
Replace(
Replace(
Replace(@UnEncoded,'&','&'),
'<', '<'),
'>', '>')
RETURN @Encoded
END
Кстати, я бы советовал увеличить размер переменной @Encoded с 500 до max. Исходный текст может быть длиннее — не стоит рисковать обрезанием данных.
Помните: это лишь один из слоёв защиты. Всегда комбинируйте с валидацией на фронтенде и серверной проверкой.
Что еще посмотреть по SQL Server
Как запустить SQL сценарий сразу на нескольких БД
Индексы SQL Server. Поиск дубликатов
Запрос для получения SQL всех индексов для таблиц базы данных SQL Server
Как перестроить все индексы на базе SQL Server
Как разрезать строку на части в SQL по некоторому символу
Конвертация из строки в таблицу в SQL Server
Выполнение прямого запроса к URL из SQL
SQL Server Как установить у таблицы описание (MS Description)
Как получить текущего юзера БД
Дополнительный заработок для разработчиков на T-SQL
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта