Как обезопасить строку из UserInput - PullRequest
2 голосов
/ 19 октября 2011

У нас есть веб-сайт, на котором пользователь может отклонить что-то от другого пользователя с указанием причины. Причина отправляется другому пользователю по электронной почте.

Какие символы могут быть отправлены другому пользователю? Я не собираюсь выполнять поиск регулярных выражений для нежелательных символов, а хочу лишь сохранить «потенциально» «безопасные» символы в причине.

Например, причина:

"Hello <b>Dear User B"

Будет преобразовано в:

"Hello bDear User B"

В настоящее время я просто делаю «Где» в массиве char и определяю мои «безопасные» условия с помощью

char.IsLetterOrDigit || char.IsPunctuation || char.IsWhiteSpace

Есть ли лучшие техники?

Ответы [ 3 ]

3 голосов
/ 19 октября 2011

Вы можете прекрасно использовать HTML в теле письма.Это позволит более красивое форматирование.Вы можете использовать библиотеку AntiXSS для ввода пользователя перед отправкой по электронной почте, чтобы отфильтровать опасные вещи из HTML (например, теги <script>).

1 голос
/ 31 октября 2012

вы можете попробовать использовать класс HttpEncoder в C # с методом htmlEncode в вашей строке. Это превратит все <> в HTML-эквивалент & lt; и т. д. Возвращение безопасной строки.

Хотя это будет выглядеть ужасно со всеми & lt; и что-то вроде этого в электронном письме, вы можете рассматривать это как потенциально безопасное решение.

Если вы также вставляете комментарии в базу данных, я бы не рекомендовал использовать этот метод, так как он не защищен от SQL-инъекций. В этом случае вы можете использовать htmlencode для отправки электронных писем и использовать параметры для вставки в базу данных.

0 голосов
/ 19 октября 2011

, если вы считаете, что символы, имеющие значения ascii от 32 до 126, безопасны для вас, тогда вы можете использовать

bool bad = value.Any(c => c < 32 || c > 126);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...