Я искал SO и нашел похожие вопросы, но ни один не сравнил все три.Это удивило меня, поэтому, если кто-то знает об этом, пожалуйста, укажите мне на это.
Существует несколько различных способов анализа строки запроса в запросе ... «правильный» способ (IMO) долженобрабатывать нулевые / пропущенные значения, но также декодировать значения параметров по мере необходимости.Что из следующего было бы лучшим способом сделать оба?
Метод 1
string suffix = Request.QueryString.Get("suffix") ?? "DefaultSuffix";
Метод2
string suffix = Request.QueryString["suffix"] ?? "DefaultSuffix";
Метод 3
NameValueCollection params = HttpUtility.ParseQueryString(Request.RawUrl);
string suffix = params.Get("suffix") ?? "DefaultSuffix";
Метод 4
NameValueCollection params = HttpUtility.ParseQueryString(Request.RawUrl);
string suffix = params["suffix"] ?? "DefaultSuffix";
Вопросы:
Будет ли Request.QueryString["suffix"]
возвращать ноль, если не указан суффикс?(Смущающий базовый вопрос, я знаю)
Предоставляет ли * 1034 какие-либо дополнительные функции по сравнению с прямым доступом к Request.QueryString
?
Документация MSDNперечисляет это предупреждение:The ParseQueryString method uses query strings that might contain user input, which is a potential security threat. By default, ASP.NET Web pages validate that user input does not include script or HTML elements. For more information, see Script Exploits Overview.
Но мне неясно, если это означает, что ParseQueryString()
следует использовать для обработки этого или он подвержен недостаткам безопасности из-за этого ... Что это?
ParseQueryString()
по умолчанию использует кодировку UTF8 ... все ли браузеры кодируют строку запроса в UTF8 по умолчанию?
ParseQueryString()
будут разделять запятыми значения, если указано более одного ... делаетRequest.QueryString()
сделать то же самое, или что произойдет, если этого не произойдет?
Какой из этих методов будет правильно декодировать "% 2b" в "+"?
Снова покажу свои корни разработки для Windows ... и я был бы гораздо более быстрым разработчиком, если бы меня не интересовали такие вещи ...: P