#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 выполняет работу, делает это правильно и «достаточно быстро». Вы действительно видите проблемы с производительностью с этим?