#naukaprogramowania

25
167

Zaloguj się aby komentować

Z czego korzystacie do testowania rest api(głównie chodzi o fuzzer lub coś w tym stylu i to lokalnie, bo chcę to automatyzować bez dostępu do świata)?


Używam serwisów napisanych w pythonie (pydantic + fastapi) i rust (actix + utoipa)


Obecnie korzystam z:


  • https://github.com/matusf/openapi-fuzzer - działa tylko dla rustowego openapi, bo fastapi bazuje na jakimś starym dokumencie gdzie niektóre wartości mają inne typy niż walidatory oczekują i przez to się wysypuje. Problematyczne jest to że więcej logiki do weryfikacji mam właśnie od strony pythona i to właśnie chciałbym bardziej testować

  • https://github.com/Endava/cats - ciekawy projekt, który ignoruje część błędów w schemacie openapi i pozwala na testowanie nawet niepoprawnego schematu. Działa na początku całkiem dobrze, bo znajduje najbardziej podstawowe błędy, jednak z czasem widać że celuje on bardziej w implementację testowania takich programów jak uvicorn/fastapi a nie samego programu użytkownika(np. jest masa fuzzerów które wysyłają śmieci w nagłówkach, dane z niepoprawnym kodowaniem etc.), a mnie interesują tylko dane które w miarę poprawne mogą zwrócić nieoczekiwany wynik


Poszukuję czegoś "myślącego" albo dającego takie pozory, by znaleźć błędy które powyższe programy pomijają i muszę ręcznie błedy te wyszukiwać, np. sytuację w której dodaję użytkownika i za pomocą zwróconego uuid kontynuowany jest proces testowania api


jakieś inne programy też testowałem, ale odbijałem się od nich bardzo szybko, bo trudno było je używać albo i nawet zainstalować


#programowanie

#naukaprogramowania

@qarmin 

a mnie interesują tylko dane które w miarę poprawne mogą zwrócić nieoczekiwany wynik


To się nazywa "domena biznesowa" i za to Ci płacą mordo ( ͡° ͜ʖ ͡°)

Zaloguj się aby komentować

Potrzebuję stworzyć prosty system logowania do serwera i dostępu do jego zasobów, który oczywiście powinien być bezpieczny, ale w miarę łatwo implementowalny.


Jako że nigdy się w aplikacjach warstwą sieciową nie zajmowałem, to mam problem ze znalezieniem odpowiedniej metody.


Na internecie jest masa poradników jak to zrobić, ale oczywiście dotyczą różnych frameworków jak i różnych metod(tokeny, sesje), więc akurat nie wszystko kojarzę.


Z tego co wnioskuję logika powinna wyglądać w ten sposób:


  • W bazie użytkownika zostaje dodane login + posolone hasło

  • Użytkownik próbuje zalogować się do serwera, więc w zapytaniu przesyła w body login + hasło

  • Serwer weryfikuje czy w bazie dane się znajdują, jeśli tak, to generuje token przy pomocy sekretnego klucza, w którym wewnątrz jest zapisany login użytkownika i czas wygaśnięcia i zwraca go użytkownikowi

  • Użytkownik otrzymuje klucz i następnie do każdego zapytania api dodaje go do nagłówka Authentication

  • Serwer po otrzymaniu zapytania, sprawdza nagłówek i odpakowywuje login i czas wygaśnięcia tokena, jeśli token jest ciągle ważny, to wykonuje daną operację, jeśli nie to zwraca błąd

  • Serwer dla każdego zapytania wymaga tego tokena(oczywiście oprócz resta do logowania)


Czy moje rozumowanie jest poprawne?


#programowanie

#naukaprogramowania

@qarmin brzmi jak JWT. Domyślnie podpis JWT nie jest sprawdzany, więc twoja w tym głowa by to wymusić. Jak wspomniano wyżej; co złego jest w zwykłej sesji? Będzie najprościej

@Meverth Pewnie wychodzę w rozważaniach zbyt daleko, ale czy ciasteczka w przypadku wielu serwerów nie są problematyczne? Skoro jeden serwer otworzył sesję, to drugi raczej o niej nic nie wie i trzeba się bawić w przesyłanie danych o niej pomiędzy nimi(oczywiście jeśli dobrze rozumiem jak to działa).


W przypadku jwt każdy serwer może obsłużyć to zapytanie, bo nic się na nim związanego z tym konkretnym tokenem nie zapisuje

@qarmin zależy co rozumiesz pod pojęciem 'wielu serwerów'. Możesz użyć wspólnego, rozproszonego cache do trzymania sesji. JWT ma też swoje problemy. Np. konto zostanie hacknięte i chciałbyś je dezaktywować, a token jest dalej ważny.

@qarmin najprostszy i najbezpieczniejszy dostęp do serwera to klient SSH, z zablokowanym dostępem innym niż przez klucz. Ale ty piszesz o aplikacji webowej. Jeśli chcesz zapewnić dostęp do serwera za pomoacą aplikacji webowej, to zasoby które udostępni serwer będą ograniczone tylko do tego co wystawia aplikacja za pomocą interfejsu. Musisz się zastanowić co chcesz udostępnić, a potem pomyśleć o sposobie realizacji bo aplikacja to jeden ze sposobów. Poza tym jest wiele różnych darmowych aplikacji serwerowych do różnego typu zasobów. Filmy, pliki, Smart Home i różnego rodzaju czujniki, konsolowe sesje dostępowe. W zasadzie to co potrzeba?

@DexterFromLab Jako serwer, chodziło mi o serwer dla aplikacji(mobilnej/webowej), udostępniający zasoby do niej i logowanie użytkowników poprzez resty - czyli bardziej o aplikacja do obsługi takich zapytań a nie sprzet/system.

@qarmin no to masz w springu np. moduł security i jak masz "serwer side rendering" to załatwia całą autoryzację, tokeny, klucze, szyfrowanie. Jeśli nie preferujesz żadnej konkretnej technologii to java jest spoko. Ale myślę z każdy wiodący framework webowy będzie kompleksowo obsługiwał sesje logowania. Django w pythonie na przykład, a w PHP to w sumie nie wiem co się teraz używa. Kiedyś używałem codeigniter.

Zaloguj się aby komentować

Symfony Messenger i klasy Transportów


https://gildia-developerow.pl/symfony-messenger-i-klasy-transportow/ 


Symfony Messenger jest świetny. Zgodzicie się? Instalujecie jedną paczkę i możecie wysłać wiadomość na kolejkę… oh wait. No jednak nie. Chociaż nie jest to tak trywialne jak w Doctrine, to jest to dosyć proste, o czym będzie dzisiejszy post.


Tagi: #programowanie, #naukaprogramowania i #programista15k w #php, #symfony i #technologia

Zaloguj się aby komentować

Zaloguj się aby komentować

Zaloguj się aby komentować

Siema. Kto tam chce to zapraszam na krótkiego strima o 21


Posprzedaje patenty jak ogarnąć logowanie we własnych apkach


1. Pokażę gotowy flow uwierzytelniania przez zewnętrzny serwis z moim bekendem

2. Napiszemy frontową obsługę logowania


Tag do śledzenia #programujzpasterzem


https://www.youtube.com/watch?v=83kc-BPMh-s


#openapi #backend #frontend #nodejs #javascript #programista15k #naukaprogramowania #programowanie

Zaloguj się aby komentować

Zaloguj się aby komentować

Doctrine i problem Lazy Loadingu


https://gildia-developerow.pl/doctrine-i-problem-lazy-loadingu/


Większość świeżych programistów, którzy pytają tych starszych o porady, słyszą: „Ucz się Symfony, Doctrine i pisz testy”. A młodzi przyjmują to za świętość i uczą się. Znają podstawowe pojęcia, po czym wchodzą na projekt, napiszą endpoint dla dużego zestawu danych i… całość wykonuje się w 13 sekund. Ta historia, choć nieco przeze mnie ufarbowana, wydarzyła się całkiem niedawno. I z chęcią podzielę się z Wami kilkoma szczegółami oraz wnioskami z tej sprawy


Tagi: #programowanie, #naukaprogramowania i #programista15k w #php, #symfony i #doctrine. Trochę #performance

Zaloguj się aby komentować

Koncept migracji bazodanowych i Doctrine 2


https://gildia-developerow.pl/koncept-migracji-bazodanowych-i-doctrine-2/ :)


Podczas tworzenia aplikacji biznesowych, nie sposób nie poruszyć tematu aktualizacji bazy danych – elementu, z którym spotykamy się w codziennej pracy. Niezależnie od typu środowiska, zawsze trafimy na temat migracji bazy danych. Na szczęście Doctrine posiada specjalnie do tego wyspecjalizowany mechanizm, którego najważniejsze elementy poruszymy w tym wpisie.


Tagi: #programowanie, #naukaprogramowania oraz #programista15k w #php, #symfony, #doctrine

Zaloguj się aby komentować

Zaloguj się aby komentować

W poszukiwaniu agregatów w Domain Driven Design


https://gildia-developerow.pl/w-poszukiwaniu-agregatow-w-domain-driven-design/


Agregaty to perła pośród całego Domain Driven Design. Święty Graal wielu, którzy migrują na DDD. Niby każdy wie o ich istnieniu, jednakże znaleźć projekt z ich wykorzystaniem jest niełatwo. Przejdźmy przez ten bardzo ciekawy element taktycznego DDD.


Tagi: #programowanie, #naukaprogramowania i #programista15k w #php, #ddd i ukochana #architektura

Trochę nie rozumiem argumentu z managementem @epsilon_eridani. To raczej zespół (liderzy techniczni, CTO) powinni dobierać sposób tworzenia oprogramowania.

@MarcinKuklinski w małej jednostce racja, gdy jesteś wyizolowany i interesują Cie tylko kontrakty, w większym departamentach - przynajmniej z mojego doświadczenia ludzie są niechętni schodzenia z głównej linii + masz już ustalone narzędzia/frameworki. Teraz np pracuje w banku więc to już w ogóle padaka żeby cokolwiek przewalczyć.

A co to za DDD bez agregatów? czasem ciężko je dobrze ustalić, ale aby nie było ich w projekcie to jeszcze nie słyszałem

Zaloguj się aby komentować

Kojarzy mi się, że jakiś czas temu na społeczności był poruszony temat, że po co pisać artykuł z przykładem kodu, skoro na podstawie tl;dr ChatGPT może nam wszystko, co trzeba wygenerować. Trochę mnie ten temat, jako twórcę bloga, męczył przez jakiś czas, a że trochę tego czasu już minęło, to piszę nowy wpis, zamiast udzielać się w starym.


Ciekawi mnie, co Was jako programistów, czy osoby uczące się programowania najbardziej przyciąga do czytania treści na blogach innych programistów? Bo w zasadzie możemy stwierdzić tak:


  • Potrzebuję informacji o jakimś zagadnieniu? ChatGPT może wytłumaczyć.

  • Potrzebuję kodu jakiegoś algorytmu albo szablonu jakiegoś wzorca projektowego? ChatGPT wygeneruje mi kod w dowolnym języku.

  • Potrzebuję jakiejkolwiek pomocy z programowaniem? Również ChatGPT może tutaj podpowiedzieć, a Plus nawet wyszukać za nas po internecie i powołać się na dokumentację.


Gdzie tutaj jest w takim razie miejsce na blogi programistyczne ? W ogóle czytacie jakieś regularnie, śledzicie jakichś twórców? Czy może dalej szukacie informacji po Google i korzystacie z wyników z devblogów? Jak tak, to co Was do nich przyciąga?


Bardzo mnie ten temat ciekawi, bo przez pisanie od kilku lat bloga nie czuję się odpowiednio obiektywny w temacie, a jakkolwiek na to nie spojrzeć, dotyczy mnie .


#programowanie #naukaprogramowania #programista15k #chatgpt

@marmot to zależy. Chatgpt ma tą jedną wadę że jak nie wie to sobie dopowie i wychodzą bzdury. Plus trzeba bardzo pilnować o co pytasz. Ostatnio pytałem AI ile ma być max psi w kole do roweru. Wypluło elaborat że przed użyciem roweru mam się upewnić czy w dętce nie ma psa przed rozpoczęciem jazdy

@SzwagierPrezydenta A to się zgodzę. Dlatego z ChatGPT Plus świetną sprawą jest to, że potrafi szukać w Internecie. Wtedy proszę go o źródła i cyk, znikają głupoty w odpowiedzi.

@marmot cieszę się że pobudzilem Cię do rozkminki mnie osobiście interesują bardziej Twoje przemyślenia, doświadczenia, przeżycia, oryginalne refleksje. Wszystko co było opisane w książkach mogę sobie przeczytać w tych książkach. Ale pewnie masz codziennie jakiś problem którego nikt wcześniej nie opisał. Czy to w pracy z ludźmi, w projekcie, w konsumowaniu dokumentacji. I o nim chciałbym przeczytać.

@wombatDaiquiri Fajnie, że się udzieliłeś, bo też nie chciałem Cię specjalnie wywoływać dlatego, że kilka tygodni temu coś napisałeś . Dzięki!

@marmot może kwestia tego, że jakbym miał wyżyć z prompt engineeringu, to bym jadł suchy chleb, ale jak pytam o coś ChatGPT, to czuję jakbym czytał wypracowania na język polski w gimnazjum. Mało konkretów, dużo uogólnień, lania wody, bezcelowego rozwlekania wypowiedzi. Na blogach mam tę zaletę, że często idzie znaleźć kompleksowe podejście do tematu w formie, którą da się czytać.

Zaloguj się aby komentować

Dzień dobry środowy poranku!


Dziś mamy nowy wpis na blogu Nieco długi, ale moim zdaniem bardzo potrzebny. Jest o słowie kluczowym final i dlaczego osobiście go nie lubię


Klasy finalne, PHPSpec i spam interfejsów

https://gildia-developerow.pl/klasy-finalne-phpspec-i-spam-interfejsow/ 


Podejście typu „rób tak zawsze i koniec” jest moim zdaniem słabe. Tym bardziej, jeżeli nie padają żadne argumenty. Bo jak pojawiają się argumenty, to jest również dyskusja. Tak jest w kwestii podejścia „klasa powinna być finalna by default”, a ja przychodzę z argumentami, dlaczego nie.


Tagi: #programowanie, #naukaprogramowania i #programista15k w #php, #symfony, #oop i oczywiście nie może zabraknąć #architektura (bo interfejsy)

Zaloguj się aby komentować

WykopGPT - Perspective API - dziś, 20:00


Zapraszam na kolejny live, podczas którego do naszego bota podłączymy fajne narzędzie (również oparte na AI), które wykrywa wszelkiego rodzaju szkalowania (nie tylko wielkich Polaków) oraz treści toksyczne, tak aby uniknąć wysyłania przez użytkowników pytań łamiących regulaminy OpenAI i Wykopu czy Hejto. Dodatkowo pokażę jeden z popularnych loggerów błędów aplikacji.


Tag do czarnolistowania / followania: #programujzpasterzem


#chatgpt #openai #programista15k #it #naukaprogramowania #nodejs #javascript #glupiewykopowezabawy #youtube #filmnawieczor #programowanie


https://www.youtube.com/watch?v=JuBZ2bi2qGs

Zaloguj się aby komentować

Komunikacja dwóch mikroserwisów z Symfony Messengerem

https://gildia-developerow.pl/komunikacja-dwoch-mikroserwisow-z-symfony-messengerem/


W poprzednim wpisie zajmowaliśmy się tematem przetwarzania asynchronicznego wiadomości za pomocą komponentu Symfony Messenger. Czy wiecie, że Messenger służy również do komunikacji dwóch serwisów ze sobą? Nie? No to zaraz się dowiecie


Tagi: #programowanie, #naukaprogramowania i #programista15k w #programowanie, #symfony, #architektura, #mikroserwisy

Zaloguj się aby komentować