I was refactoring some code в a web application today и came across something like это в base class для всех webpages:Использование QueryString в качестве отладочного переключателя?
if (Request.QueryString["IgnoreValidation"] != null)
{
if (Request.QueryString["IgnoreValidation"].ToUpper() == "TRUE")
{
SessionData.IgnoreValidation = true;
}
}
Чтобы меня, это appears к be a Very Bad Thing ™, поэтому я instantly removed все следы этого флага из кода. Во-первых, было несколько утверждений if, на которых проверялось значение флага, что приводило к загроможденной и нечеткой логике. Во-вторых, я столкнулся с другим, более опасным флагом с именем «IgnoreCreditCardValidation». Вы можете догадаться, что это сделал ...
Затем я подумал об этом и вспомнил аналогичный пример из предыдущей работы. В коде приложения, проданном как «защищенный модуль аутентификации», использовался параметр QueryString, используемый для переопределения поведения по умолчанию, что позволяет любому, кто знает об этом, обходить аутентификацию.
Теперь мой вопрос является скорее подтверждением, так ли это плохо, как кажется в моей голове, или я просто слишком остро реагирую, и это обычное явление? Существуют ли какие-либо случаи, когда есть веская причина для этого? Для меня это просто похоже на ужасную смесь лени и небрежности.
Если это дубликат, не стесняйтесь указывать меня в правильном направлении.
Спасибо!
Кто-нибудь помнит бэкдор в фильме WarGames? –
Нет, извините. Мне было 2. :) –
Кто-нибудь постучал в твою дверь, все еще удивляясь, почему их игнорирующие флаги больше не работают? –