Разбейте свою шкалу на четыре части. По мере увеличения цветовой шкалы секция 1 становится красной / синей с уменьшением красного, секция 2 - сине-зеленой с усилением зеленого, секция 3 - сине-зеленой с уменьшением синего, а секция 4 - зеленой / красной с усилением красного.
Непроверенный образец ниже. Возможно, вам придется внести коррективы в зависимости от требуемой компоновки значения RGB.
private static readonly double n35 = 35;
public static int CalculateRgb(byte colorIndex)
{
if (colorIndex > 140)
{
throw new ArgumentOutOfRangeException(nameof(colorIndex));
}
byte red = 0, green = 0, blue = 0;
if (colorIndex <= 35)
{
blue = 255
red = 255 * (n35 - (double) colorIndex) / n35);
}
else if (colorIndex <= 70)
{
colorIndex -= 35;
blue = 255
green = 255 * ((double) colorIndex / 35);
}
else if (colorIndex <= 105)
{
colorIndex -= 70;
green = 255
blue = 255 * (n35 - (double) colorIndex) / n35);
}
else
{
colorIndex -= 105;
green = 255
red = 255 * ((double) colorIndex) / n35);
}
return
(red << 24) |
(green << 16) |
(blue << 8);
}
http://support.microsoft.com/kb/937523
Когда клиент пытается автоматически подключить отладчик в приложении ASP.NET 2.0, клиент отправляет HTTP-запрос, содержащий глагол DEBUG. Этот HTTP-запрос используется для проверки того, что процесс приложения запущен, и для выбора правильного процесса для присоединения.
Он использует аутентификацию Windows и DCOM для отладки - так что я не знаю, является ли глагол DEBUG сам по себе большим риском для безопасности (очевидно, если вы разрешаете трафик RPC, то у вас есть более серьезные проблемы) или какие-либо эксплойты. Однако UrlScan блокирует его по умолчанию.
Я бы, наверное, поставил на него сетевой сниффер, чтобы проверить, какая информация все же просачивается.
Глагол ОТЛАДКИ действительно позволяет потенциальное нападение XSS (согласно Комплекту Отрыжки), даже с <compilation debug="false"/>
, потому что 403 ответа включают требуемый путь URL в свое тело, которое может содержать вектор атаки. Эта фиксация заставляет IIS возвратить 404 ответа без тела и так удаляет уязвимость.
Как намекнул Марк, глагол DEBUG
используется для запуска/остановки удаленных сеансов отладки. Более конкретно, запрос DEBUG
может содержать заголовок Command
со значением start-debug
и stop-debug
, но сама отладка выполняется по протоколу RPC.
Итак, почему сканер безопасности выполняет такой запрос? Оказывается, с помощью запросов DEBUG
можно определить, есть ли в web.config
. Тест можно выполнить с помощью telnet, WFetch или аналогичного, отправив запрос, подобный этому:
DEBUG /foo.aspx HTTP/1.0 Accept: */* Host: www.example.com Command: stop-debug
В зависимости от того, включена отладка или нет, вы получите либо 200 OK
, либо 403 Forbidden
.
Обычно принято считать, что вы никогда не должны иметь
в производственной среде, так как это имеет серьезные последствия для производительности сайта. Я не уверен, что включение отладки открывает какие-либо новые векторы атак, если только трафик RPC также не включен, в этом случае у вас в любом случае возникнут более серьезные проблемы (см. ответ Марка). Любые дополнительные соображения о перспективах безопасности будут очень признательны.
Существует простой способ избежать случайного получения
на производственных сайтах. Просто добавьте
в machine.config
.
Очевидно, что наличие
в machine.config
не равно установке
в данном конкретном случае. Результат от броска DEBUG
запросов к веб-приложению может быть изменен только с помощью последнего. Умопомрачительно!
@Mark, @ Jørn, спасибо за отличную информацию, мне тоже было любопытно по этому поводу.
Что касается вашего отчета, с точки зрения безопасности, есть еще один аспект (помимо RPC и поддержки отладки) - поверхность для атаки. I - это элемент с низким уровнем риска, но лучше всего сводить к минимуму любые внешние интерфейсы, которые вам не нужны, чтобы у потенциальных злоумышленников было меньше места для маневра и была меньшая вероятность обнаружения этой критической ошибки.
Кстати, включение отладочной компиляции имеет другие эффекты, поскольку оставляет больше следов, файлов pdb и т. Д. Не обязательно высокий риск, но все же ... (не говоря уже о соответствии PCI, если это актуально.)