https://aie24.pl/
Czat Copilot działa najlepiej, gdy traktujesz go jak ludzkiego programistę — prawdopodobnie najbardziej gadatliwego ludzkiego programistę, jakiego kiedykolwiek spotkałeś, ale takiego, który wydaje się wiedzieć dużo, więc tolerujesz. Na przykład, załóżmy, że chcesz uzyskać pomoc w naprawieniu błędu w swoim kodzie. Twoja interakcja z bardziej doświadczonym kolegą może wyglądać mniej więcej tak:
Ty: Hej, Linda, masz czas, żeby pomóc mi naprawić coś w moim kodzie?
Linda: Jasne. Jaki jest problem?
Ty: Czy widzisz jakieś potencjalne problemy z bezpieczeństwem w sposobie, w jaki napisałem punkty końcowe rejestracji i logowania na tym serwerze?
Linda: Daj mi pomyśleć. Nie. Wygląda dość standardowo.
Ty: Jak byś to przetestował?
Linda: Prawdopodobnie za pomocą Jest i Supertest.
Ty: Tak, okej. Nie wiem, jak ich używać.
Linda: Przeczytaj dokumentację.
Ty: Okej, dzięki.
Gdybyś miał taką samą rozmowę z Copilot Chat, Twoje pytania mogłyby być dokładnie takie same (przynajmniej na początku). Zobaczmy, jak to się potoczy. Poniżej znajduje się moja prawdziwa rozmowa z Copilot.
Ja: Hej, Copilocie, czy masz czas, żeby pomóc mi naprawić coś w moim kodzie?
Czat Copilota: Oczywiście! Chętnie pomogę. Jaki jest problem?
Ja: Czy widzisz jakieś potencjalne problemy z bezpieczeństwem w sposobie, w jaki napisałem punkty końcowe rejestracji i logowania na tym serwerze?
Czat Copilota: Nie jestem pewien, czy mógłbyś pokazać mi kod tych punktów końcowych?
W tym momencie otworzyłem plik zawierający kod, do którego się odwoływałem.
Ja: Oto one.
Rozmowa drugiego pilota: Widzę, że używasz tokenów JWT do uwierzytelniania użytkowników. To dobry początek. Nie widzę jednak żadnej walidacji danych wprowadzanych przez użytkownika. Zawsze powinieneś walidować dane wprowadzane przez użytkownika, aby zapobiec atakom takim jak wstrzykiwanie kodu SQL lub cross-site scripting (XSS). Ponadto ważne jest hashowanie haseł przed zapisaniem ich w bazie danych, aby zapobiec ich ujawnieniu w przypadku naruszenia danych.
Ja: Sprawdzam dane wprowadzane i hashuję hasło za pomocą bcrypt. Czy możesz spojrzeć jeszcze raz?
Czat drugiego pilota: Widzę, że używasz biblioteki bcrypt do hashowania hasła przed zapisaniem go w bazie danych, co jest świetne. Nie widzę jednak żadnej walidacji danych wprowadzanych przez użytkownika. Zawsze powinieneś walidować dane wprowadzane przez użytkownika, aby zapobiec atakom takim jak wstrzykiwanie kodu SQL lub cross-site scripting (XSS). Jednym ze sposobów, aby to zrobić, jest użycie biblioteki takiej jak express-validator do walidacji danych wprowadzanych przed ich przetworzeniem.
Tutaj Copilot miał rację. Okazało się, że nie weryfikowałem danych wejściowych. Copilot również podał mi sugerowany następny monit, jak pokazano na rysunku

Zadałem pytanie uzupełniające i wdrożyłem sugerowane rozwiązanie, ale nadal nie byłem przekonany. Zadałem to samo pytanie, które zadałem mojej współpracownicy Lindzie:
Ja: Jak byś to przetestował?
Czat drugiego pilota: Aby przetestować walidację, możesz wysłać żądanie POST do punktu końcowego /signup z nieprawidłowym wejściem i sprawdzić, czy serwer zwraca prawidłową odpowiedź błędu. Oto przykład, jak możesz to przetestować za pomocą supertest i jest:
Copilot nie tylko udzielił mi praktycznie tej samej odpowiedzi, co mój współpracownik, ale okazał się o wiele bardziej cierpliwy i nawet napisał dla mnie przykładowy test.