VC ++ 'Генерирование Кода', что это означает?

Существует пара различных направлений, можно пойти с автоматизированными инструментами тестирования для веб-приложений.

Первый, существуют коммерческие веб-сканеры , которых HP WebInspect и Rational AppScan самые популярные два. Это "единые", инструменты "выпустил-забыл", которые Вы загружаете и устанавливаете на внутреннем рабочем столе Windows и затем даете URL пауку Ваш сайт, сканирование для известных уязвимостей (т.е., вещи, которые поразили Bugtraq), и датчик для сценариев перекрестного сайта и уязвимостей Внедрения SQL.

1132-секундный, существуют инструменты сканирования исходного кода , которых Coverity и Fortify являются, вероятно, самыми известными двумя. Это инструменты, которые Вы устанавливаете на рабочем столе разработчика, чтобы обработать Ваш Java или исходный код C# и искать известные шаблоны небезопасного кода, как плохой контроль ввода.

Наконец, существуют инструменты теста на проникновение . Безусловно самый популярный инструмент тестирования на возможность проникновения веб-приложения среди специалистов по безопасности является Комплектом Отрыжки, который можно найти в http://www.portswigger.net/proxy . Другие включают Прокси Скачка и OWASP WebScarab. Снова, Вы установите это на внутреннем рабочем столе Windows. Это будет работать как Прокси HTTP, и Вы укажете на свой браузер на него. Вы используете свои приложения, как обычный пользователь был бы, в то время как это записывает Ваши действия. Можно тогда вернуться к каждой отдельной странице или действию HTTP и зондировать его для проблем безопасности.

В сложной среде, и особенно если Вы рассматриваете что-нибудь сделай сам, , я настоятельно рекомендую инструменты тестирования на возможность проникновения . Вот то, почему:

Коммерческие веб-сканеры обеспечивают большую "ширину", наряду с превосходным созданием отчетов. Однако:

  • Они имеют тенденцию пропускать вещи, потому что каждое приложение отличается.

  • Они являются дорогими (WebInspect запускается в 10-х тысяч).

  • Вы платите за материал, в котором Вы не нуждаетесь (как базы данных известного плохого CGIs с 90-х).

  • Их трудно настроить.

  • Они могут привести к шумным результатам.

сканеры Исходного кода более полны, чем веб-сканеры. Однако:

  • Они являются еще более дорогими, чем веб-сканеры.

  • Они требуют, чтобы исходный код работал.

  • , Чтобы быть эффективными, они часто требуют, чтобы Вы аннотировали свой исходный код (например, выбрали входные трассы).

  • у Них есть тенденция произвести ложные положительные стороны.

И коммерческие сканеры и сканеры исходного кода имеют дурную привычку к становлению shelfware. Хуже, даже если они работают, их стоимость сопоставима с получением 1 или 2 целых приложений, контролируемых консультированием; при доверии консультантам Вы, как гарантируют, станете лучше, следует из них, чем от инструментов.

инструменты Тестирования на возможность проникновения имеют оборотные стороны также:

  • Их намного более трудно использовать, чем коммерческие сканеры "выпустил-забыл".

  • Они принимают некоторые экспертные знания в уязвимостях веб-приложения---, необходимо знать то, что Вы ищете.

  • Они производят минимальное формальное создание отчетов.

, С другой стороны:

  • Они очень, намного более дешевый---лучшая из партии, Комплекта Отрыжки, стоит только 99EU и имеет бесплатную версию.

  • Их легко настроить и добавить к рабочему процессу тестирования.

  • Они намного лучше в помощи Вам "узнать" Ваши приложения с внутренней части.

Вот что-то, что Вы сделали бы с перьевым инструментом тестирования для основного веб-приложения:

  1. Входят в приложение через прокси

  2. , Создают "список совпадений" главных функциональных областей приложения и осуществляют каждого однажды.

  3. Использование инструмент "паука" в Вашем перьевом тестовом приложении для нахождения всех страниц и действий и обработчиков в приложении.

  4. Для каждой динамической страницы и каждой HTML-формы паук раскрывает, используйте "fuzzer" инструмент (Отрыжка называет его "злоумышленником") осуществить каждый параметр с недопустимыми исходными данными. Большинство fuzzers идет со строками базового теста, которые включают:

    • метасимволы SQL

    • Escape HTML/Javascript и метасимволы

    • Интернационализировавшие варианты их для уклонения от входных фильтров

    • Известные имена полей формы по умолчанию и значения

    • Известные имена каталогов, имена файлов и глаголы обработчика

  5. Проводят несколько часов, фильтруя получающиеся ошибки (типичный пух, выполненный для одной формы, мог бы генерировать 1000 из них), поиск подозрительных ответов.

Это - трудоемкий подход "без операционной системы". Но когда Ваша компания владеет реальными приложениями, подход без операционной системы окупается, потому что можно использовать его для создания комплектов регрессионного теста, которые будут работать как часы в каждом dev цикле для каждого приложения. Это - победа для набора причин:

  • Ваше тестирование безопасности займет предсказуемое количество времени и ресурсы на приложение, которое позволяет Вам бюджету и медицинской сортировке.

  • Ваша команда получит максимально точные и полные результаты, так как Ваше тестирование будет настроенным на Ваши приложения.

  • Это собирается стоить меньше, чем коммерческие сканеры и меньше, чем консультанты.

, Конечно, если Вы идете этим путем, Вы в основном превращаете себя в консультант по безопасности для Вашей компании. Я не думаю, что это - плохая вещь; если Вы не хотите тех экспертных знаний, WebInspect или Укрепляете, не собирается помогать Вам очень так или иначе.

16
задан tshepang 27 May 2014 в 20:41
поделиться

4 ответа

Он делает то, что он говорит: он генерирует машинный код . Многие компиляторы переводят исходные коды C / C ++ в некоторое промежуточное внутреннее представление, которое позже используется в качестве источника для генерации реального машинного кода. Компилятор Visual C ++ (как и многие другие компиляторы) делает это в пакетах : сначала он переводит кучу исходных файлов в это промежуточное представление, а затем преобразует их все в машинный код (а затем начинает работу над следующим пакетом) . Вот что происходит, когда вы видите сообщение «Генерирование кода».

Я не знаю, какую именно логику он использует для разделения исходных файлов на партии. Может, работает просто по размеру: как только общий размер всех сгенерированных промежуточных представлений достигает некоторого предела, он переключается в режим «генерации кода». Возможно, здесь также работает какая-то другая логика.

В любом случае обратите внимание, что некорректный термин «код» в данном случае не относится к исходному коду, что означает, что он не имеет ничего общего с шаблонами и / или препроцессором или чем-то еще. как это. Более того, обращение к исходным текстам C с неквалифицированным «кодом» (в отличие от квалифицированного « исходный код») является очень нишевым делом, больше подходящим для отдела маркетинга, чем для настоящих программистов. На уровне программистов никто не называет исходники C просто «кодом» :)

это означает, что он не имеет ничего общего с шаблонами и / или препроцессором или чем-то в этом роде. Более того, обращение к исходным текстам C с неквалифицированным «кодом» (в отличие от квалифицированного « исходный код») является очень нишевым делом, больше подходящим для отдела маркетинга, чем для настоящих программистов. На уровне программистов никто не называет исходники C просто "кодом" :)

это означает, что он не имеет ничего общего с шаблонами и / или препроцессором или чем-то в этом роде. Более того, обращение к исходным текстам C с неквалифицированным «кодом» (в отличие от квалифицированного « исходный код») является очень нишевым делом, больше подходящим для отдела маркетинга, чем для настоящих программистов. На уровне программистов никто не называет исходники C просто "кодом" :)

13
ответ дан 30 November 2019 в 23:05
поделиться

Visual Studio вызывает компоновщик LINK.exe, он работает в основном с объектными файлами в качестве входных данных, создавая исполняемый файл в качестве выходных данных, но также может выполнять много другой работы, касающейся этих и связанных файлов. Синтаксис командной строки компоновщика @ MSDN

-2
ответ дан 30 November 2019 в 23:05
поделиться

Компилятору одновременно предоставляется несколько входных файлов, и он читает (анализирует) несколько из них за один раз, и только после этого создает для них выходные данные (объектные файлы), прежде чем читать другие входные файлы. Я предполагаю, что это оптимизация, предположительно потому, что смешанный доступ для чтения / записи к диску медленнее, чем когда он сортируется на (сначала) доступ для чтения и (затем) доступ для записи.

прежде чем он прочитает больше входных файлов. Я предполагаю, что это оптимизация, предположительно потому, что смешанный доступ для чтения / записи к диску медленнее, чем когда он сортируется на (сначала) доступ для чтения и (затем) доступ для записи.

прежде чем он прочитает больше входных файлов. Я предполагаю, что это оптимизация, предположительно потому, что смешанный доступ для чтения / записи к диску медленнее, чем когда он сортируется на (сначала) доступ для чтения и (затем) доступ для записи.

3
ответ дан 30 November 2019 в 23:05
поделиться

Экземпляры шаблонов (и другой тип кода) могут генерировать код (или нет в некоторых условиях).

-2
ответ дан 30 November 2019 в 23:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: