Сервер.Производительность Htmlencode в сравнении с регулярным выражением.Заменить в сравнении со строкой.Заменить

#asp.net #regex #string

#asp.net #регулярное выражение #строка

Вопрос:

Что является самым быстрым в ASP.NET приложение? Пытаюсь уловить все способы непослушного XSS / CSRF и тому подобное.

Сервер.HtmlEncode перед отображением, строка.Вызовы Replace (один за другим) или сложное регулярное выражение, за которым следует Regex.Replace?

Спасибо за любую информацию

Ответ №1:

Вы бы использовали Server.HtmlEncode … дело не только в «скорости», но и в том, что для этого и предназначена технология. Вполне вероятно, что вы собираетесь что-то забыть в вашем .Replace().Replace().Replace().Replace (который также работает медленнее).

Немного объяснений

Имейте в виду, что «Сервер.HtmlEncode » сделает один потоковый проход через вашу строку, тогда как .Replace().Replace().Replace() сделает несколько проходов, чтобы сделать то же самое.

Что касается регулярного выражения — у вас будут накладные расходы, связанные с тем, что регулярное выражение анализируется и компилируется в первую очередь.

Комментарии:

1. 1, но я бы не стал сразу отказываться от решения с регулярными выражениями по соображениям производительности; Объекты регулярных выражений могут быть предварительно созданы и использованы повторно, даже скомпилированы в байт-код MSIL и постоянно сохранены в DLL. Что я бы отверг, так это тот факт, что есть готовый инструмент, который вам не нужно поддерживать. Зачем кому-то вообще думать об использовании регулярных выражений вместо этого?

Ответ №2:

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