使用 GitHub Copilot 提升安全性

使用 GitHub Copilot 进行软件开发

Thalia Barrera

AI Engineering Curriculum Manager, DataCamp

当 bug 变成漏洞

 

nanobanana: half: 一侧是开发者在笔记本上发现一个小且无害的 bug,另一侧是阴影人物从服务器中窃取数据,对比两种情景的扁平矢量插图

 

  • 脆弱代码常与其他代码看起来一样
  • 能通过测试、评审,甚至上线到生产
  • 🤖 Copilot 可充当安全审查员
使用 GitHub Copilot 进行软件开发

一个易受攻击的函数

 

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

 

攻击者可注入 SQL:

  • 直接绕过认证
  • 导出整个 users
  • 删除数据库
使用 GitHub Copilot 进行软件开发

[录屏]

使用 GitHub Copilot 进行软件开发

[录屏]

使用 GitHub Copilot 进行软件开发

高效的安全提示

 

定向审查

检查 #selection 是否存在 SQL 注入和 XSS 漏洞

 

全仓扫描

@workspace 扫描硬编码凭据或 API 密钥

使用 GitHub Copilot 进行软件开发

[录屏]

使用 GitHub Copilot 进行软件开发

从审查到预防

nanobanana: half: 一个发光的安全盾牌,周围是代表各种网络威胁的警告图标,干净背景的扁平矢量插图

 

防御式代码生成

为此端点添加输入校验。拒绝异常类型并限制长度。

 

别只会发现漏洞——还要预防它们

使用 GitHub Copilot 进行软件开发

把安全融入每条建议

 

.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 进行软件开发

按语言定制的安全规则

 

.github/instructions/security.instructions.md

applyTo: "**/*.py"

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

 

✅ 将安全变成你写代码的方式的一部分

使用 GitHub Copilot 进行软件开发

让我们来练习!

使用 GitHub Copilot 进行软件开发

Preparing Video For Download...