Бөлісу құралы:


Быстрый запуск: Анализатор безопасности

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

Начало работы

Убедитесь, что вы подключены к базе данных и открываете активное окно редактора с расширением MSSQL. При подключении @mssql участник чата понимает контекст среды базы данных и может предоставлять точные предложения с учетом контекста. Если вы не подключаетесь к базе данных, участник чата не имеет контекста схемы или данных для предоставления значимых ответов.

В следующих примерах используется образец базы данных AdventureWorksLT2022, доступный для загрузки на домашней странице проектов сообщества и примеров Microsoft SQL Server.

Для получения наилучших результатов настройте имена таблиц и схем в соответствии с собственной средой.

Убедитесь, что чат включает @mssql префикс. Например, введите @mssql, а затем ваш вопрос или запрос. Этот префикс гарантирует, что участник чата понимает, что вы запрашиваете помощь, связанную с SQL.

Обнаружение и устранение рисков безопасности с помощью GitHub Copilot

GitHub Copilot помогает разработчикам обнаруживать и устранять распространенные уязвимости безопасности в начале процесса разработки, прежде чем они достигают рабочей среды. Независимо от того, используете ли вы необработанные платформы SQL, реляционное сопоставление объектов (ORM) или хранимые процедуры, GitHub Copilot может определить небезопасные шаблоны, объяснить потенциальные риски и предложить более безопасные альтернативные варианты на основе контекста базы данных. Эта возможность особенно полезна для разработчиков, которые не специализируются на безопасности, но должны соблюдать безопасные методики написания кода.

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

Обнаружение SQL-инъекций

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

SQLAlchemy в примере Python

I'm working with SQLAlchemy in Python for my current database `SalesLT` schema. Check the following `SQLAlchemy` query for potential security risks, such as SQL injection, over-fetching, or performance issues. If applicable, suggest improvements using parameterized queries, connection pooling, and other secure `SQL Server` practices to ensure performance and security.

query = f"SELECT * FROM SalesLT.Customer WHERE LastName = '{user_input}'"
result = engine.execute(query).fetchall()

Пример SQL JavaScript

Analyze the following JavaScript SQL query for potential security vulnerabilities. Identify risks such as SQL injection, over-fetching, and poor authentication practices. Explain why this query is insecure and provide a secure alternative.

const query = `SELECT * FROM Users WHERE Username = '${username}' AND Password = '${password}'`;

Моделирование SQL-инъекции

Using my current database, simulate a SQL injection attack for the `SalesLT.uspGetCustomerOrderHistory` stored procedure and suggest fixes.

Ознакомьтесь с примером хранимой процедуры

Review the stored procedure `SalesLT.uspGetCustomerOrderHistory` in my current database for potential SQL injection vulnerabilities. Explain how unparameterized or improperly validated inputs could be exploited and recommend secure coding practices.

Пример выявления проблем безопасности

Review the `SalesLT.uspGetCustomerOrderHistory_Insecure` stored procedure. Identify any potential security issues in the implementation and then provide a revised version of the stored procedure that addresses these concerns without explicitly listing security best practices.

You can use the following T-SQL to create the stored procedure:

CREATE OR ALTER PROCEDURE [SalesLT].[uspGetCustomerOrderHistory_Insecure]
@CustomerID NVARCHAR (50)
AS
BEGIN
    DECLARE @SQL AS NVARCHAR (MAX) = N'SELECT *
    FROM SalesLT.SalesOrderHeader
    WHERE CustomerID = ' + @CustomerID + ';';
    EXECUTE (@SQL);
END
GO

Общие предложения по безопасности

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

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

Пример хранилища конфиденциальных данных

Recommend secure methods for storing sensitive data in the `SalesLT.Address` table.

Пример маскирования персональных данных

What are the best strategies or built-in features in my database for masking personal data in the `SalesLT.Customer` table?

Применение шифрования в примере Entity Framework Core

How can I configure my connection string in Entity Framework Core to enforce encryption and avoid exposing credentials?

Идентификатор Microsoft Entra в примере проверки подлинности Node.js

In a Prisma or Node.js environment, how can I securely use Microsoft Entra ID authentication or managed identity with SQL Server instead of storing passwords?

Предложите примеры опций SQL Server для защиты данных

What SQL Server options should I enable or verify (for example, Always Encrypted, Transparent Data Encryption) to protect customer data when using object-relational mapping (ORM) frameworks like Sequelize or EF Core?

Оставьте свой отзыв

Чтобы помочь нам уточнить и улучшить GitHub Copilot для расширения MSSQL, используйте следующий шаблон проблемы GitHub для отправки отзывов: GitHub Copilot Feedback

При отправке отзывов рассмотрите возможность включения:

  • Тестируемые сценарии: сообщите нам, на какие области вы ориентированы, например создание схемы, создание запросов, безопасность, локализация.

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

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

  • Предложения по улучшению: Делитесь идеями для улучшения удобства использования, расширения функциональности или улучшения ответов от GitHub Copilot.