Viết kiểm thử và bảo mật mã với AI

Lập trình với AI dành cho Developer

Francesca Donadoni

AI Curriculum Manager, DataCamp

Nhắc theo kiểm thử

☺ Nhắc bình thường

Viết một hàm Python để phân tích cú pháp địa chỉ email.

🤓 Nhắc theo kiểm thử (Test-Driven)

Viết một hàm Python để phân tích cú pháp địa chỉ email. Hàm phải vượt qua các kiểm thử sau:

  • Chấp nhận địa chỉ hợp lệ như "[email protected]".
  • Từ chối đầu vào không hợp lệ như "user@@domain".
  • Ném ValueError khi đầu vào rỗng.
Lập trình với AI dành cho Developer

Nhắc theo kiểm thử

  • Lời nhắc người dùng: Tạo unit test bằng Python cho một hàm xử lý dữ liệu biểu mẫu do người dùng gửi và chèn vào cơ sở dữ liệu SQL.

  • Phản hồi của mô hình:

Đây là bộ pytest sẵn chạy bao phủ kiểm tra hợp lệ, chuẩn hóa, an toàn trước SQL injection và hành vi giao dịch cho hàm xử lý dữ liệu biểu mẫu và chèn bản ghi vào cơ sở dữ liệu SQL.

[...]
# ---------- Test DB fixtures ----------

@pytest.fixture()
def conn():
    """In-memory SQLite DB with a users table."""
    c = sqlite3.connect(":memory:") [...]
Lập trình với AI dành cho Developer

Nhắc theo kiểm thử

  • Lời nhắc người dùng: Tạo unit test Python dùng pytest cho hàm sau. Bao gồm các trường hợp đầu vào rỗng, chứa từ khóa SQL và ký tự đặc biệt. Giả sử có kết nối cơ sở dữ liệu mock. <INSERT FUNCTION>

  • Phản hồi của mô hình:

Đây là mô-đun kiểm thử pytest tự chứa dùng mock (không có DB thật) và bao phủ đầu vào rỗng, từ khóa SQL, ký tự đặc biệt. Đồng thời xác minh hành vi commit/close và việc nuốt ngoại lệ.

[...]
@pytest.fixture
def mock_sqlite_connect(monkeypatch):
    """
    Patch sqlite3.connect to return a MagicMock connection + cursor.
[...]
Lập trình với AI dành cho Developer

Nhắc cho bảo mật

☺ Nhắc bình thường

$$

Quét hàm Python sau để tìm lỗ hổng tiềm ẩn và đề xuất cách an toàn hơn nếu có.

🤓 Nhắc theo kiểm thử

$$

Rà soát mã này cho các vấn đề bảo mật web phổ biến, gồm SQL injection, XSS và lỗi kiểm tra đầu vào.

Lập trình với AI dành cho Developer

OWASP Top 10

OWASP Top 10

Lập trình với AI dành cho Developer

OWASP Top 10

  • Lời nhắc người dùng: Kiểm tra hàm sau theo các lỗ hổng OWASP Top 10.
def login(username, password):
   query = f"SELECT * FROM users WHERE username = '{username}' \
           AND password = '{password}'"
   result = db.execute(query)
   return result.fetchone()
  • Phản hồi của mô hình:

Đây là bản audit OWASP Top 10 tập trung cho hàm đăng nhập của bạn, kèm bản viết lại an toàn hơn.

  1. A03: Injection. Nội suy chuỗi trực tiếp vào SQL khiến hàm dễ bị SQL injection. Ví dụ payload:
    • username = "admin' --" → bỏ qua kiểm tra mật khẩu. [...]
Lập trình với AI dành cho Developer

Vamos praticar!

Lập trình với AI dành cho Developer

Preparing Video For Download...