Устранение проблем с помощью режима агента GitHub Copilot

Завершено

После анализа проблем безопасности с помощью режима ask можно реализовать исправления. Режим агента GitHub Copilot позволяет безопасно выполнять сложные задачи исправления, обеспечивая сохранение функциональных возможностей и улучшение качества кода.

Замечание

Всегда используйте режим запроса GitHub Copilot для анализа проблем безопасности и формирования плана исправления перед использованием режима агента для реализации изменений. Такой подход гарантирует, что рефакторинг выполняется тщательно и безопасно.

Что такое режим агента?

Режим агента GitHub Copilot работает автономно для выполнения сложных задач исправления в базе кода. В отличие от режима ask, который предоставляет рекомендации и предложения на панели чата, режим агента реализует предлагаемые обновления в виде изменений непосредственно в файлах кода.

К возможностям режима агента относятся следующие возможности:

  • Редактирование файлов с точными изменениями кода.
  • Одновременное применение изменений между несколькими файлами.
  • Выполнение тестов для проверки изменений.
  • Выполнение команд на основе ваших инструкций.
  • Общие сведения о контексте проекта и зависимостях.
  • Обеспечение согласованности в базе кода.

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

Устранение проблем безопасности с помощью режима агента

Вы можете использовать режим агента для реализации исправлений безопасности, определенных во время анализа режима ask. Режим агента может выполнять несколько шагов исправления автоматически, сохраняя исходные функциональные возможности и повышая безопасность кода.

Стратегии устранения проблем безопасности

Ниже приведены основные стратегии использования режима агента для устранения проблем безопасности:

  • Устранение уязвимостей внедрения: Инструктируйте режим агента заменить объединение строк параметризованными запросами или подготовленными операторами.

  • Реализуйте безопасное шифрование: обновление слабых алгоритмов хэширования в режиме агента с помощью безопасных альтернатив, таких как bcrypt или Argon2.

  • Очистка журнала: используйте режим агента для удаления конфиденциальных данных из инструкций журнала при сохранении полезных диагностических сведений.

  • Проверка путей к файлам. Разрешить режиму агента добавить правильную проверку пути, которая предотвращает обхода каталогов.

  • Добавление проверки входных данных: режим агента реализует комплексную проверку входных данных и очистку.

  • Гарантия безопасности: Настройте агентский режим для проверки того, что исправления сохраняют все существующие проверки безопасности и не вводят новых уязвимостей.

  • Поддержка функций: используйте режим агента для сохранения всей существующей бизнес-логики и обработки ошибок при повышении безопасности.

Режим агента запрашивает устранение проблем безопасности

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

Подготовка и безопасность

Эти запросы помогут вам установить меры безопасности перед внесением изменений в базу кода.

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

Основные операции исправления

Используйте эти запросы для решения распространенных уязвимостей системы безопасности с простыми исправлениями.

  • "Рефакторинг выбранного SQL-запроса для использования параметризованных запросов вместо объединения строк".
  • "Замените хэширование выбранных паролей MD5 на bcrypt, включая правильное создание соли".
  • Удалите конфиденциальную информацию из выбранных записей ведения журнала без потери диагностического значения.
  • "Добавьте проверку пути к выбранным операциям с файлами, чтобы предотвратить обход каталогов".

Расширенные шаблоны исправления

Эти запросы направляют режим агента через более сложные меры по улучшению безопасности, затрагивающие несколько компонентов или изменения архитектуры.

  • Преобразуйте выбранную функцию аутентификации для использования безопасной аутентификации на основе токенов с правильной настройкой срока действия.
  • "Реализуйте комплексную проверку входных данных для выбранных функций обработки пользовательских данных".
  • "Замените выбранную слабую реализацию шифрования на AES-256, следуя рекомендациям".
  • Переработайте выбранную обработку ошибок для предоставления удобных для пользователя сообщений при безопасном ведении журнала подробных ошибок.

Качество и проверка

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

  • "После реализации исправлений безопасности запустите все тесты и убедитесь, что функциональные возможности остаются идентичными".
  • "Убедитесь, что фиксированный код следует рекомендациям по безопасности C# Майкрософт и соглашениям о коде".
  • "Убедитесь, что исправления безопасности не вводят регрессии производительности".
  • "Создайте модульные тесты, ориентированные на безопасность, чтобы убедиться, что уязвимости полностью устранены".

Рабочий процесс режима агента для устранения проблем безопасности

Выполните этот систематический рабочий процесс, чтобы устранить проблемы безопасности с помощью режима агента:

Шаг 1. Подготовка рабочей области

Начиная с чистого рабочего пространства, вы можете точно отслеживать изменения и при необходимости отменить их.

Убедитесь, что вы работаете в чистой ветви Git, где все изменения зафиксированы коммитами. Перейдите к файлу, содержащему уязвимость безопасности, проанализированную в режиме "Запрос", и подготовьте план устранения, чтобы можно было на него ссылаться.

Шаг 2. Настройка мер безопасности

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

Перед внесением изменений создайте тесты для проверки текущего поведения.

Пример запроса: "Создать комплексные юнит-тесты для функции SearchProducts для проверки текущего поведения перед реализацией исправлений безопасности".

Режим агента создает тесты, которые фиксируют текущее поведение, предоставляя базовые показатели для проверки.

Шаг 3. Начало работы с критически важными исправлениями безопасности

Решение наиболее опасных уязвимостей сначала гарантирует, что наиболее опасные проблемы устраняются быстро.

Начните с уязвимостей с наивысшим приоритетом.

Пример задачи: "Рефакторировать метод SearchProducts для использования параметризованных запросов вместо объединения строк." Убедитесь, что все векторы инъекций SQL устранены.

Режим агента анализирует код, заменяет уязвимую конкатенацию строк параметризованными запросами и добавляет проверку входных данных, чтобы устранить уязвимость внедрения SQL.

Шаг 4. Реализация безопасной криптографии

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

Продолжайте работу с усовершенствованиями шифрования.

Пример запроса: "Замените хэширование паролей MD5 в HashPassword методе реализацией bcrypt, включая правильное создание соли".

Режим агента обновляет слабые алгоритмы хэширования, чтобы защитить альтернативы, такие как bcrypt, добавляет проверку пароля и создает метод проверки.

Шаг 5. Очистка ведения журнала и обработка ошибок

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

Устранение проблем с раскрытием информации.

Пример запроса: "Удалить конфиденциальную информацию из журналов в модуле проверки подлинности при сохранении значимости для диагностики".

Режим агента удаляет конфиденциальные данные из журналов и заменяет подробные сообщения об ошибках понятными альтернативами при сохранении диагностических сведений в безопасных журналах.

Шаг 6. Добавление проверки пути

Проверка путей к файлам запрещает злоумышленникам получать доступ к файлам за пределами предполагаемой области каталога.

Реализуйте безопасность пути к файлу.

Пример запроса: "Добавление комплексной проверки пути к SaveFile методу для предотвращения обхода каталогов".

Режим агента реализует проверку пути с помощью Path.GetFileName(), проверяет, что пути остаются в предполагаемых каталогах, и добавляет проверки на наличие недопустимых символов.

Шаг 7. Проверка изменений

Тестирование после каждого основного исправления гарантирует устранение уязвимости и отсутствие новых проблем.

После каждого основного исправления безопасности проверьте изменения.

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

В режиме агента выполняются существующие тесты и создаются другие тесты безопасности, которые проводят SQL-инъекционные атаки, чтобы убедиться, что уязвимость устранена.

Шаг 8: Проверка и итерация

Устранение сбоев тестов и уточнение реализаций гарантирует, что все требования выполнены перед завершением исправления.

Если обнаружены проблемы, укажите конкретные инструкции по уточнениям.

Пример запроса: "Сбой теста проверки длины пароля. Обновите проверку, чтобы разрешить пароли от 8 до 128 символов".

Режим агента анализирует неудачные тесты и вносит необходимые исправления, чтобы обеспечить соблюдение всех требований.

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

Вопросы безопасности и качества

При использовании режима агента для исправления безопасности всегда учитывайте последствия безопасности и качества:

Рекомендации по обеспечению безопасности

Следуя этим методикам безопасности, вы гарантируете, что исправления являются комплексными и не представляют новых уязвимостей.

При устранении уязвимостей рассмотрите следующие методики безопасности:

  • Тщательно проверяйте: убедитесь, что все входные проверки являются комплексными и обрабатывают пограничные варианты.
  • Сохранение авторизации. Убедитесь, что исправления безопасности не обходят проверку подлинности или авторизации.
  • Глубинная защита: убедитесь, что несколько уровней безопасности остаются нетронутыми.
  • Проверка зависимостей. Убедитесь, что исправления безопасности не содержат уязвимых зависимостей.
  • Подробное тестирование. Включите как положительные, так и отрицательные тесты безопасности.

Стандарты качества кода

Поддержание качества кода вместе с улучшениями безопасности гарантирует, что база кода остается поддерживаемой и профессиональной.

Поддерживайте высокое качество кода, следуя приведенным ниже рекомендациям:

  • Следуйте соглашениям: убедитесь, что фиксированный код следует соглашениям по программированию на C# корпорации Майкрософт.
  • Поддержка удобочитаемости. Убедитесь, что исправления безопасности не компрометирует ясность кода.
  • Изменения документа: добавление комментариев, объясняющих критически важный для безопасности код.
  • Документация по обновлению: убедитесь, что README, политики безопасности и документы API отражают изменения.
  • Рассмотрите производительность. Убедитесь, что улучшения безопасности значительно не ухудшают производительность.

Рекомендации по безопасности режима агента

Режим агента мощный, но требует тщательного надзора.

Перед исправлением

Принятие этих мер предосторожности перед началом устранения позволяет свести к минимуму риск потери проделанной работы или внесения критических изменений.

  • Всегда работайте в функциональной ветке.
  • Убедитесь, что имеется всестороннее покрытие тестов.
  • Просмотрите план устранения из анализа режима Ask mode.
  • Ознакомьтесь с уязвимостью безопасности и ее потенциальными последствиями.
  • Резервное копирование критически важных данных или конфигураций.

Во время устранения неполадок

Следуя этим рекомендациям во время исправления, вы сможете перехватывать и устранять проблемы, возникающие при их возникновении, а не обнаруживать их позже.

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

После исправления

Эти шаги после внесения исправлений подтверждают, что ваши исправления завершены, правильны и готовы к развертыванию.

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

Рассматривать режим агента как мощный помощник

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

  • Перед принятием всех изменений просмотрите все изменения.
  • Убедитесь, что уязвимости безопасности полностью устранены.
  • Убедитесь, что новые уязвимости не появились.
  • Тщательно проверьте, чтобы поймать тонкие проблемы.
  • Проверка соответствия политикам безопасности.

Режим агента ускоряет исправление безопасности, но не заменяет необходимость тщательной проверки и тестирования.

Интеграция с рабочим процессом Git

Подключите изменения режима агента в рабочий процесс Git беспрепятственно, используя встроенные средства Visual Studio Code.

Фиксация изменений с помощью представления системы управления версиями

Встроенное представление системы управления версиями Visual Studio Code упрощает процесс фиксации и отправки исправлений безопасности в репозиторий.

Вид управления исходным кодом в Visual Studio Code предоставляет интегрированный способ проверки и внесения исправлений уязвимостей безопасности.

  1. Откройте представление управления версиями, выбрав значок "Управление версиями" на панели действий или нажав клавиши CTRL+SHIFT+G.

  2. Просмотрите изменения, перечисленные в разделе "Изменения", чтобы убедиться, что включены все исправления безопасности.

  3. Наведите указатель мыши на файлы, чтобы подготовить их, и выберите значок +, или подготовьте все изменения, используя значок +, расположенный рядом с "Изменения".

  4. Введите описательное сообщение коммита в поле для сообщений, которое ссылается на задачу GitHub.

    Fix SQL injection vulnerability in SearchProducts
    
    - Replace string concatenation with parameterized queries
    - Add input validation for search terms
    - Implement security tests for injection attempts
    
    Fixes #42
    

    Замечание

    Чтобы связать коммиты с проблемами GitHub, добавьте номер проблемы в сообщение коммита, используя синтаксис Fixes #номер-проблемы. Этот синтаксис автоматически закрывает проблему при слиянии коммита.

  5. Нажмите кнопку "Фиксация", чтобы зафиксировать изменения.

  6. Нажмите кнопку "Синхронизировать изменения" , чтобы отправить ветвь в удаленный репозиторий.

Кроме того, можно использовать команды Git в интегрированном терминале:

# Stage all changes
git add .

# Commit with a descriptive message referencing the GitHub issue
git commit -m "Fix SQL injection vulnerability in SearchProducts

- Replace string concatenation with parameterized queries
- Add input validation for search terms
- Implement security tests for injection attempts

Fixes #42"

# Push changes to the remote repository
git push origin your-branch-name

Сводка

Использование режима агента GitHub Copilot позволяет разработчикам эффективно устранять проблемы безопасности при сохранении качества кода и функциональности. Объединяя аналитические сведения из режима ask с возможностями выполнения режима агента, вы можете систематически устранять уязвимости в базе кода. Ключом к успеху является предоставление четких инструкций, поддержание практик безопасности, тщательное проверка всех изменений и обеспечение надлежащей документации. Режим агента GitHub Copilot является мощным помощником, который ускоряет исправление. Однако контроль над человеком остается важным для обеспечения того, чтобы исправления безопасности были полными, правильными и не вводят новые уязвимости.