GitHub Copilot ile güvenlik

GitHub Copilot ile Yazılım Geliştirme

Thalia Barrera

AI Engineering Curriculum Manager, DataCamp

Hatalar nasıl zafiyete dönüşür

 

nanobanana: half: Bir yanda dizüstü ekranında küçük zararsız bir hatayı fark eden geliştirici; diğer yanda sunucudan veri akan gölgeli figür; iki durumu karşılaştıran düz vektör illüstrasyon

 

  • Zafiyet içeren kod çoğu zaman diğer kodla aynı görünür
  • Testleri ve incelemeleri geçer, bazen prod’a bile çıkar
  • 🤖 Copilot bir güvenlik inceleyicisi olabilir
GitHub Copilot ile Yazılım Geliştirme

Zaafiyeti olan bir fonksiyon

 

def get_user(username):
    query = f"SELECT * FROM users \
WHERE username = '{username}'"
    return db.execute(query)

 

Saldırgan SQL enjekte edebilir:

  • Kimlik doğrulamayı tamamen atlar
  • Tüm users tablosunu döker
  • Veritabanınızı silebilir
GitHub Copilot ile Yazılım Geliştirme

[ekran kaydı]

GitHub Copilot ile Yazılım Geliştirme

[ekran kaydı]

GitHub Copilot ile Yazılım Geliştirme

İşe yarayan güvenlik istemleri

 

Hedefli inceleme

#selection için SQL enjeksiyonu ve XSS açıklarını inceleyin

 

Tüm kod tabanında tarama

Sert kodlanmış kimlik bilgileri veya API anahtarları için @workspace taraması

GitHub Copilot ile Yazılım Geliştirme

[ekran kaydı]

GitHub Copilot ile Yazılım Geliştirme

İncelemeden önlemeye

nanobanana: half: Farklı siber tehdit türlerini simgeleyen uyarı ikonlarıyla çevrili, parlayan bir güvenlik kalkanı; temiz arka plan üzerinde düz vektör illüstrasyon

 

Savunmacı kod üretimi

Bu uca giriş doğrulaması ekleyin. Beklenmeyen türleri reddedin ve uzunluk sınırı koyun.

 

Yalnızca açıkları bulmayın — onları önleyin

GitHub Copilot ile Yazılım Geliştirme

Her öneriye güvenliği yerleştirin

 

.github/copilot-instructions.md

## Security standards
- Use parameterized queries
- Never hardcode credentials or API keys
- Validate and sanitize all user input
- Use bcrypt or argon2 for password hashing
GitHub Copilot ile Yazılım Geliştirme

Dile özgü güvenlik kuralları

 

.github/instructions/security.instructions.md

applyTo: "**/*.py"

- Use secrets module instead of random for tokens
- Escape all user input in Jinja2 templates

 

✅ Güvenlik artık yazım tarzınızın bir parçası olur

GitHub Copilot ile Yazılım Geliştirme

Haydi pratik yapalım!

GitHub Copilot ile Yazılım Geliştirme

Preparing Video For Download...