İçeriğe geç

E-postayla hesap bulma

Güvenlik · Zorluk 1/5 · Python · 19 satırKöken: Kurgu

Görev

Yapay zekâdan istenen

"Şifremi unuttum" uç noktası için e-postayla hesap bulan bir fonksiyon yaz. E-postalar veritabanında küçük harfle saklanır; arama baştaki ve sondaki boşlukları ve büyük-küçük harfi yok saysın. Hesap varsa kimliğini ve e-postasını, yoksa None döndürsün. Uç nokta her durumda aynı cevabı verir; bu fonksiyon yalnız hesabı bulur.

Teslim notu

Yapay zekâ kodu teslim ederken şunu yazdı:

“E-posta temizlenip küçük harfe çevriliyor, uzunluk sınırı kontrol ediliyor. Yalnız gereken iki sütun okunuyor, şifre özeti dönmüyor.”

Yapay zekânın yazdığı kod

Python19 satır

Hatalı bulduğun satırları işaretle; her işarete önem seç ve nedenini bir cümleyle yaz.

Satıra tıkla ya da dokun. Klavyede satıra gidip Enter'a bas.

0/5 işaret
Önem nasıl seçilir
  • KritikVeri kaybı, güvenlik açığı ya da para kaybı
  • ÖnemliGörevin istediği bir durumda kullanıcı yanlış sonuç alır
  • KüçükGörevin dışında kalan nadir bir uç durum ya da okunurluk

Test konusunda önem, testin yakalamadığı hatalı uygulamanın etkisine göre belirlenir.

Gerekçe puanlanmaz; sonuçta örnek cevapla karşılaştırırsın.

import sqlite3
2
MAX_EMAIL_LENGTH = 254
4
5
def find_account(conn: sqlite3.Connection, email: str) -> dict | None:
    """Look up an account for the "forgot password" endpoint.
8
    Returns the account's id and email, or None if no account matches.
    """
    email = email.strip().lower()
    if not email or len(email) > MAX_EMAIL_LENGTH:
        return None
    row = conn.execute(
        f"SELECT id, email FROM accounts WHERE email = '{email}'"
    ).fetchone()
    if row is None:
        return None
    return {"id": row[0], "email": row[1]}

Kanıtlayan test

Doğru seçenek, bu kodda başarısız olan, yani hatayı ortaya çıkaran testtir.

Test seçenekleri
Göndermek için en az bir satır işaretle.

Gönderince sayaca yedi bilgi gider; gerekçe metnin cihazında kalır. Veriler