Säkerhet med GitHub Copilot

Mjukvaruutveckling med GitHub Copilot

Thalia Barrera

AI Engineering Curriculum Manager, DataCamp

När buggar blir sårbarheter

 

nanobanana: half: En utvecklare som upptäcker en harmlös bugg på en bärbar dators skärm, och på andra sidan en skuggig gestalt med data som strömmar ut från en server, platt vektorillustration som kontrasterar de två scenarierna

 

  • Sårbar kod ser ofta identisk ut jämfört med annan kod
  • Passerar tester, granskningar och levereras ibland till produktion
  • 🤖 Copilot kan fungera som en säkerhetsgranskare
Mjukvaruutveckling med GitHub Copilot

En sårbar funktion

 

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

 

En angripare kan injicera SQL:

  • Kringgå autentisering helt
  • Dumpa hela tabellen users
  • Radera din databas
Mjukvaruutveckling med GitHub Copilot

[screencast]

Mjukvaruutveckling med GitHub Copilot

[screencast]

Mjukvaruutveckling med GitHub Copilot

Säkerhetsprompter som fungerar

 

Riktad granskning

Review #selection for SQL injection and XSS vulnerabilities

 

Genomsökning av hela kodbasen

@workspace scan for hardcoded credentials or API keys

Mjukvaruutveckling med GitHub Copilot

[screencast]

Mjukvaruutveckling med GitHub Copilot

Från granskning till förebyggande

nanobanana: half: En lysande säkerhetssköld omgiven av varningsikoner som representerar olika typer av cyberhot, platt vektorillustration mot en ren bakgrund

 

Defensiv kodgenerering

Add input validation to this endpoint. Reject unexpected types and enforce length limits.

 

Bara hitta sårbarheter räcker inte — förebygg dem

Mjukvaruutveckling med GitHub Copilot

Bygg in säkerhet i varje förslag

 

.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
Mjukvaruutveckling med GitHub Copilot

Språkspecifika säkerhetsregler

 

.github/instructions/security.instructions.md

applyTo: "**/*.py"

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

 

✅ Säkerhet blir en del av hur du skriver kod

Mjukvaruutveckling med GitHub Copilot

Nu kör vi en övning!

Mjukvaruutveckling med GitHub Copilot

Preparing Video For Download...