Przejdź do zawartości
Menu główne
Menu główne
przypnij
ukryj
Nawigacja
Strona główna
Ostatnie zmiany
Losowa strona
Pomoc z MediaWiki
Mazovia
Szukaj
Szukaj
Utwórz konto
Zaloguj się
Narzędzia osobiste
Utwórz konto
Zaloguj się
Strony dla anonimowych edytorów
dowiedz się więcej
Edycje
Dyskusja
Edytujesz
SQL injection vs. připravené dotazy: kde vzniká skutečná díra
Strona
Dyskusja
polski
Czytaj
Edytuj
Edytuj źródło
Wyświetl historię
Narzędzia
Narzędzia
przypnij
ukryj
Działania
Czytaj
Edytuj
Edytuj źródło
Wyświetl historię
Ogólne
Linkujące
Zmiany w linkowanych
Strony specjalne
Informacje o tej stronie
Uwaga:
Nie jesteś zalogowany. Jeśli wykonasz jakąkolwiek zmianę, Twój adres IP będzie widoczny publicznie. Jeśli
zalogujesz się
lub
utworzysz konto
, Twoje zmiany zostaną przypisane do konta, wraz z innymi korzyściami.
Filtr antyspamowy.
Nie
wpisuj tu nic!
<br>REST se vyplatí, když jsou data veřejná, [https://Www.travelwitheaseblog.com/?s=stabiln%C3%AD stabilní] a dobře cachovatelná. If you have any thoughts with regards to where and how to use [http://Crativ.co.kr/bbs/board.php?bo_table=info1&wr_id=140413 http://Crativ.co.kr/bbs/board.php?bo_table=info1&wr_id=140413], [http://Crativ.co.kr/bbs/board.php?bo_table=info1&wr_id=140413 osvětlení v obýváku] you can call us at our internet site. CDN, HTTP cache a proxy fungují bez dalšího kódu, protože odpověď závisí jen na URL a hlavičkách. Dobře navržené REST API používá stránkování, filtrování v query parametrech a jasné chybové stavy. Typická chyba je „chatty" návrh: klient kvůli jedné obrazovce volá pět endpointů a výsledek slepuje na klientovi. Řešením nebývá GraphQL, ale návrh složeného endpointu nebo rozumná expanze vztahů. Pozor také na verzování přes URL – jakmile začnete vydávat /v2, /v3, znamená to, že se mění kontrakt a klienti to pocítí.<br><br>Reálný start vypadá tak, že si vyberete jeden jednoduchý endpoint, třeba vyhledávání nebo seznam položek. Pošlete na něj požadavek ručně, přes nástroj na testování požadavků, a podívejte se na odpověď. Sledujte stavový kód. Dvojstovky znamenají úspěch, čtyřstovky chybu na vaší straně, pětistovky problém na serveru. Když dostanete 401, je špatný nebo chybějící klíč. Když 429, překročili jste limit a máte zpomalit. Teprve až ruční požadavek projde, přepište ho do svého skriptu.<br><br>Kde GraphQL vyhraje a na co si dát pozor GraphQL se vyplatí, když máte mnoho klientů s různými potřebami — web, mobil, interní nástroje — a nechcete udržovat desítky variant endpointů. Klient si vyžádá přesně ta pole, která zobrazí, takže mobil nestahuje zbytečná data. Silné schéma a nástroje pro introspekci zlepšují dokumentaci i validaci. Pozor ale na dvě věci. Za prvé, autorizace musí být součástí resolverů, ne jen na vstupu do endpointu; jinak snadno uniknou citlivá pole. Za druhé, hloubka a složitost dotazů musí být omezená, jinak vám jeden klient položí server.<br><br>První krok je rozdělit testy podle toho, co skutečně chrání. Testy, které ověřují doménovou logiku a výpočty, držte na úrovni jednotek a pište je tak, aby nezávisely na konkrétním API, databázi ani formulářovém poli. Testy, které ověřují spolupráci mezi komponentami, soustřeďte na kontrakty a rozhraní, ne na přesné pořadí volání. End-to-end testy nechte jen pro kritické cesty, které se mění zřídka – přihlášení, platba, uložení objednávky. Tím získáte vrstvy, které přežijí změnu zadání, protože testují záměr, ne implementaci.<br><br>Další častá chyba je spoléhání na escaping. Funkce, která přidá zpětná lomítka před apostrofy, funguje jen v některých kontextech a při špatném kódování znaků může selhat. Stejně tak nestačí omezit délku vstupu nebo použít regulární výraz jen na začátku řetězce. Bezpečnostní kontrola patří na jedno místo: do vrstvy přístupu k datům, kde se každý dotaz sestavuje jednotně. Pokud se dotazy skládají na různých místech aplikace, dříve nebo později někdo zapomene.<br><br>Testovací pyramida vznikla v prostředí, kde se zadání mění pomalu a vydrží. Jakmile se požadavky přepisují každý sprint, klasické rozložení jednotkových, integračních a end-to-end testů přestane držet. Mnoho jednotkových testů ověřuje chování, které za dva týdny zmizí, a drahé end-to-end testy naopak nestíhají pokrýt nové scénáře. Pyramida se pak rozpadá na hromadu testů, které nikdo neudržuje.<br><br>Parametrizace a prepared statements v praxi Řešením jsou parametrizované dotazy, kde se hodnoty předávají odděleně od SQL příkazu. Většina knihoven pro práci s databází to podporuje přes placeholdery, například otazník nebo pojmenovaný parametr. Správný postup je napsat dotaz s placeholdery a hodnoty předat jako argumenty. Databázový ovladač je pošle zvlášť a engine je nikdy nevyhodnotí jako SQL kód. Tím zmizí i problém s apostrofy, uvozovkami a komentáři.<br><br>V záložce se zdroji nastavte breakpoint na řádek, kde tušíte problém. Prohlížeč zastaví běh a ukáže hodnoty všech proměnných v daném rozsahu. Krokováním po řádcích zjistíte, kde se hodnota rozchází s očekáváním. U asynchronního kódu dávejte pozor, kam se provádění po pauze vrátí —await a callbacky přeskakují mezi kontexty a snadno se ztratíte. Podmíněný breakpoint se hodí ve smyčce, kdy vás zajímá jen konkrétní index.<br><br>Další častá chyba je snaha pokrýt každou novou podmínku novým end-to-end testem. Tyto testy jsou pomalé, křehké a při změně zadání je často rychlejší je smazat než opravit. Místo toho pro nový požadavek napište nejprve jednotkový test na logiku, potom případně test kontraktu a teprve když jde o cestu, kterou projde uživatel, přidejte jeden scénář na nejvyšší úrovni. Sledujte poměr mezi vrstvami: pokud end-to-end testy tvoří více než desetinu všech testů, pyramida se obrací a údržba vás pohltí.<br><br>REST a GraphQL nejsou náboženství, ale nástroje s odlišnými kompromisy. REST staví na HTTP metodách, jasných URL a cache na úrovni protokolu. GraphQL nabízí jeden endpoint, silné schéma a klient si sám určuje, jaká data dostane. Rozhodnutí nezávisí na tom, co je modernější, ale na tvaru dat, počtu klientů a ochotě provozovat další vrstvu.<br>
Opis zmian:
Wszelki wkład na Mazovia może być edytowany, zmieniany lub usunięty przez innych użytkowników. Jeśli nie chcesz, żeby Twój tekst był dowolnie zmieniany przez każdego i rozpowszechniany bez ograniczeń, nie umieszczaj go tutaj.
Zapisując swoją edycję, oświadczasz, że ten tekst jest Twoim dziełem lub pochodzi z materiałów dostępnych na warunkach
domeny publicznej
lub kompatybilnych (zobacz także
Mazovia:Prawa autorskie
).
PROSZĘ NIE WPROWADZAĆ MATERIAŁÓW CHRONIONYCH PRAWEM AUTORSKIM BEZ POZWOLENIA WŁAŚCICIELA!
Anuluj
Pomoc w edycji
(otwiera się w nowym oknie)
Przełącz ograniczenie szerokości strony