Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
GitHub Copilot помогает разработчикам выявлять и устранять распространенные риски безопасности в коде SQL и запросах уровня приложений. Особенно для разработчиков без крепкой подготовки в области безопасности, это может помочь обнаружить уязвимости, такие как SQL-инъекции, чрезмерно раскрытые данные и небезопасные шаблоны, предоставляя практические рекомендации с учетом контекста разработки во время работы.
Начало работы
Убедитесь, что вы подключены к базе данных и открываете активное окно редактора с расширением MSSQL. Это подключение позволяет участнику чата @mssql понять контекст вашей среды базы данных, обеспечивая точные предложения с учетом контекста. Без подключения к базе данных участник чата не будет иметь контекст схемы или данных для предоставления значимых ответов.
В следующих примерах используется образец базы данных AdventureWorksLT2022, доступный для загрузки на домашней странице проектов сообщества и примеров Microsoft SQL Server.
Для получения наилучших результатов настройте имена таблиц и схем в соответствии с собственной средой.
Убедитесь, что чат включает @mssql префикс. Например, введите @mssql, а затем ваш вопрос или запрос. Это гарантирует, что участник чата понимает, что вы запрашиваете помощь, связанную с SQL.
Обнаружение и устранение рисков безопасности с помощью GitHub Copilot
GitHub Copilot помогает разработчикам обнаруживать и устранять распространенные уязвимости безопасности в начале процесса разработки, прежде чем они достигают рабочей среды. Независимо от того, используете ли вы необработанные процедуры SQL, ORMs или хранимые процедуры, 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 ORMs like Sequelize or EF Core?
Оставьте свой отзыв
Чтобы помочь нам уточнить и улучшить GitHub Copilot для расширения MSSQL, используйте следующий шаблон проблемы GitHub для отправки отзывов: GitHub Copilot Feedback
При отправке отзывов рассмотрите возможность включения:
Сценарии, проверенные . Сообщите нам, какие области вы сосредоточены, например создание схемы, создание запросов, безопасность, локализация.
То, что работало хорошо – Опишите любые ситуации, которые казались бесперебойными, полезными или превысили ваши ожидания.
Проблемы или ошибки — включает любые проблемы, несоответствия или запутанное поведение. Снимки экрана или записи экрана особенно полезны.
Предложения по улучшению — предоставление общих идей для улучшения удобства использования, расширения охвата или повышения ответов GitHub Copilot.
Связанный контент
- Расширение GitHub Copilot для MSSQL для Visual Studio Code
- Быстрый старт: Использование чата и встроенных предложений GitHub Copilot
- Быстрый старт: Создание кода
- Краткое руководство. Использование обозревателя схем и конструктора
- Быстрый старт: Использование построителя интеллектуальных запросов
- Краткое руководство: Помощник оптимизации запросов
- Краткое руководство: Использование инструмента объяснения бизнес-логики
- Краткое руководство: Инструмент поддержки локализации и форматирования
- Быстрое начало: Создание данных для тестирования и имитации
- Известные проблемы и ограничения