Aracılığıyla paylaş


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

GitHub Copilot, geliştiricilerin SQL kodu ve uygulama katmanı sorgularındaki yaygın güvenlik risklerini tanımlamalarına ve ele alınmasına yardımcı olur. SQL enjeksiyonu, aşırı ifşa edilmiş veriler ve güvenli olmayan desenler gibi güvenlik açıklarını algılar. Güçlü bir güvenlik geçmişi olmayan geliştiriciler geliştirme sırasında pratik, bağlama duyarlı öneriler almak için GitHub Copilot'u kullanabilir.

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. Bağlandığınızda, sohbet katılımcısı @mssql veritabanı ortamınızın bağlamını anlar ve doğru, bağlama duyarlı öneriler verebilir. Bir veritabanına bağlanmıyorsanız, sohbet katılımcısının anlamlı yanıtlar sağlamak için şeması veya veri bağlamı yoktur.

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 ön ek, 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, nesne-ilişkisel eşleme (ORM) çerçeveleri 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 özellik özellikle güvenlik konusunda uzman olmayan ancak güvenli kodlama uygulamalarını izlemesi gereken geliştiriciler için kullanışlıdır.

Aşağıdaki bölümlerde, sohbet katılımcısı aracılığıyla sorabileceğiniz yaygın kullanım örnekleri ve örnekler açıklanmaktadır.

SQL enjeksiyonu algılama

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

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 güvenli olmayan varsayılan yapılandırmaları kullanır.

GitHub Copilot, bağlantıları şifreleme, kişisel verileri koruma veya maskeleme konusunda rehberlik sağlayarak ve çeşitli geliştirme yığınlarında güvenli kimlik doğrulaması ve yetkilendirme uygulamalarını izleyerek yardımcı olabilir.

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 object-relational mapping (ORM) frameworks 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 odaklandığınız alanları bize bildirin.

  • İyi çalışan şeyler: Sorunsuz, yararlı veya beklentilerinizi aşan deneyimleri açıklayın.

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

  • İyileştirme önerileri: Kullanılabilirliği geliştirmeye, kapsamı genişletmeye veya GitHub Copilot'un yanıtlarını geliştirmeye yönelik fikirleri paylaşın.