Bezpieczeństwo z GitHub Copilot

Programowanie z GitHub Copilot

Thalia Barrera

AI Engineering Curriculum Manager, DataCamp

Gdy błędy stają się lukami

 

nanobanana: half: Programista dostrzegający niegroźny błąd na ekranie laptopa po jednej stronie, a po drugiej tajemnicza postać z danymi wypływającymi z serwera, płaska ilustracja wektorowa zestawiająca oba scenariusze

 

  • Podatny kod często wygląda identycznie jak inny kod
  • Przechodzi testy, przeglądy, a czasem trafia na produkcję
  • 🤖 Copilot może pełnić rolę recenzenta ds. bezpieczeństwa
Programowanie z GitHub Copilot

Podatna funkcja

 

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

 

Atakujący może wstrzyknąć SQL:

  • Całkowicie ominąć uwierzytelnianie
  • Pobrać całą tabelę users
  • Usunąć bazę danych
Programowanie z GitHub Copilot

[screencast]

Programowanie z GitHub Copilot

[screencast]

Programowanie z GitHub Copilot

Skuteczne polecenia bezpieczeństwa

 

Ukierunkowany przegląd

Sprawdź #selection pod kątem SQL injection i XSS

 

Skanowanie całej bazy kodu

@workspace skanuj w poszukiwaniu zakodowanych danych uwierzytelniających lub kluczy API

Programowanie z GitHub Copilot

[screencast]

Programowanie z GitHub Copilot

Od przeglądu do prewencji

nanobanana: half: Świecąca tarcza bezpieczeństwa otoczona ikonami ostrzeżeń reprezentującymi różne zagrożenia cybernetyczne, płaska ilustracja wektorowa na czystym tle

 

Generowanie kodu defensywnego

Dodaj walidację danych wejściowych do tego endpointu. Odrzucaj nieoczekiwane typy i wymuszaj limity długości.

 

Nie tylko wykrywaj luki — zapobiegaj im

Programowanie z GitHub Copilot

Wbuduj bezpieczeństwo w każdą sugestię

 

.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
Programowanie z GitHub Copilot

Reguły bezpieczeństwa dla konkretnych języków

 

.github/instructions/security.instructions.md

applyTo: "**/*.py"

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

 

✅ Bezpieczeństwo staje się częścią sposobu pisania kodu

Programowanie z GitHub Copilot

Czas na ćwiczenia!

Programowanie z GitHub Copilot

Preparing Video For Download...