Aracılığıyla paylaş


Hızlı Başlangıç: Güvenlik çözümleyicisi

GitHub Copilot, geliştiricilere SQL kodu ve uygulama katmanı sorgularındaki yaygın güvenlik risklerini tanımlama ve ele alma konusunda yardımcı olur. Güçlü bir güvenlik altyapısına sahip olmayan geliştiriciler için özellikle, geliştirme sırasında pratik ve bağlama duyarlı öneriler sağlayarak SQL enjeksiyonu, aşırı derecede ifşa edilmiş veriler ve güvenli olmayan desenler gibi güvenlik açıklarını algılamaya yardımcı olabilir.

Başlayın

Bir veritabanına bağlı olduğunuzdan ve MSSQL uzantısıyla etkin bir düzenleyici penceresinin açık olduğundan emin olun. Bu bağlantı, sohbet katılımcısının @mssql veritabanı ortamınızın bağlamını anlamasına olanak tanıyarak doğru ve bağlama duyarlı öneriler sağlar. Veritabanı bağlantısı olmadan, sohbet katılımcısının anlamlı yanıtlar sağlamak için şeması veya veri bağlamı olmaz.

Aşağıdaki örneklerde, AdventureWorksLT2022 giriş sayfasından indirebileceğiniz örnek veritabanı kullanılır.

En iyi sonuçları elde etmek için tablo ve şema adlarını kendi ortamınızla eşleşecek şekilde ayarlayın.

Sohbetin ön ekini içerdiğinden @mssql emin olun. Örneğin, @mssql yazdıktan sonra sorunuzu ya da isteminizi yazın. Bu, sohbet katılımcısının SQL ile ilgili yardım istediğinizi anlamasını sağlar.

GitHub Copilot ile güvenlik risklerini algılama ve düzeltme

GitHub Copilot, geliştiricilerin yaygın güvenlik açıklarını üretime ulaşmadan önce geliştirme sürecinin başlarında algılamalarına ve düzeltmelerine yardımcı olur. İster ham SQL, ORM'ler ister saklı yordamlar kullanıyor olun, GitHub Copilot güvenli olmayan desenleri tanımlayabilir, olası riskleri açıklayabilir ve veritabanı bağlamınıza göre daha güvenli alternatifler önerebilir. Bu, özellikle güvenlik konusunda uzman olmayan ancak güvenli kodlama uygulamalarını izlemesi gereken geliştiriciler için kullanışlıdır.

Sohbet katılımcısı aracılığıyla sorabileceğiniz yaygın kullanım örnekleri ve örnekler aşağıda verilmiştir.

SQL enjeksiyonu algılama

SQL ekleme, veritabanı uygulamalarında en yaygın ve en tehlikeli güvenlik açıklarından biridir. GitHub Copilot, bağlamınıza göre uyarlanmış daha güvenli, parametreli alternatifler önerirken, parametrelenmemiş sorguları, dize ilişkilendirme sorunlarını ve dinamik SQL'in kötüye kullanımını belirlemeye yardımcı olabilir.

Python'da SQLAlchemy örneği

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()

JavaScript SQL örneği

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 enjeksiyon saldırısı simülasyonu

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

Saklı yordam örneğini gözden geçirin

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.

Güvenlik sorunlarını tanımlama örneği

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

Genel güvenlik önerileri

SQL eklemenin ötesinde, birçok veritabanı uygulaması hassas verileri kullanıma sunar veya varsayılan olarak güvenli olmayan yapılandırmalar kullanır. GitHub Copilot, bağlantıları şifrelemek, kişisel verileri maskelemek veya korumak ve birden çok geliştirme yığınında güvenli kimlik doğrulaması ve yetkilendirme en iyi yöntemleriyle uyumlu hale getirme konusunda rehberlik sağlar.

Hassas veri depolama örneği

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

Kişisel verileri maskeleme örneği

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

Entity Framework Core'da şifrelemeyi zorunlu kılma örneği

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

Node.js kimlik doğrulaması örneğinde Microsoft Entra Id

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?

Veri güvenliğini sağlamak için SQL Server seçeneklerini önerme örneği

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?

Deneyiminizi paylaşma

MSSQL uzantısı için GitHub Copilot'ı geliştirmemize ve geliştirmemize yardımcı olmak için aşağıdaki GitHub sorun şablonunu kullanarak geri bildiriminizi gönderin: GitHub Copilot Geri Bildirimi

Geri bildirim gönderirken şunları dahil etmeyi göz önünde bulundurun:

  • Test edilen senaryolar : Şema oluşturma, sorgu oluşturma, güvenlik, yerelleştirme gibi hangi alanlara odaklandığınız konusunda bize bilgi verin.

  • Başarılı Olanlar - Sorunsuz, yararlı veya beklentilerinizi aşan deneyimlerinizi açıklayın.

  • Sorunlar veya hatalar : Tüm sorunları, tutarsızlıkları veya kafa karıştırıcı davranışları içerir. Ekran görüntüleri veya ekran kayıtları özellikle yararlıdır.

  • İyileştirme önerileri : Kullanılabilirliği artırma, kapsamı genişletme veya GitHub Copilot'un yanıtlarını geliştirmeyle ilgili fikirleri paylaşın.