Przegląd kodu pod kątem bezpieczeństwaSzkolenia z programowania

Przegląd kodu skupiony na słabych punktach bezpieczeństwa

Realizacja od 1 dniaPoprawki w cenieKontrola jakości
Pakiety
Ochrona płatnościSzczegóły
  • Poprawki w ramach pakietu są bezpłatne.
  • Jeśli nie odpowiesz w ciągu 3 dni od dostarczenia pracy, zostanie ona zaakceptowana automatycznie.
Zamów · 32 €

Pieniądze są rezerwowane w chwili płatności i przekazywane dopiero po akceptacji pracy.

Przegląd kodu skupiony na słabych punktach bezpieczeństwa

Przykładowy rezultat

Przykład dla pakietu Standard

Przegląd kodu: skrypt Python do importu zamówień dla małego sklepu internetowego

Co robi kod

  1. Wczytuje orders.csv z eksportu sklepu.
  2. Dla każdej pozycji zamówienia znajduje produkt po SKU w stock.xlsx i odejmuje ilość.
  3. Zapisuje zaktualizowane stany i loguje sumy do import_log.txt.

Struktura jest czytelna, a funkcje dobrze nazwane. Większość problemów dotyczy danych wejściowych, które wyglądają inaczej, niż zakłada skrypt.

Błędy i słabe punkty

#LiniaWagaProblem
148WysokaTen sam CSV można zaimportować dwa razy; brak sprawdzania już przetworzonych ID zamówień. To najbardziej prawdopodobna przyczyna ujemnych stanów.
272Wysokaint(row["qty"]) wywala się na pustych wartościach lub "2.0" przy zamówieniach ze zwrotem.
395ŚredniaWyszukiwanie SKU rozróżnia wielkość liter: "gt-101" i "GT-101" to dla skryptu różne produkty.
4130ŚredniaPlik otwierany jest bez encoding="utf-8", więc w Windowsie psują się nazwy z polskimi znakami.
5201NiskaGołe except: ukrywa prawdziwe błędy i sprawia, że log jest bezużyteczny.

Poprawione fragmenty

Problem 1: pomijanie już zaimportowanych zamówień

processed = load_processed_ids("processed_orders.txt")
for row in reader:
    if row["order_id"] in processed:
        continue
    # ... dotychczasowa logika ...
    processed.add(row["order_id"])
save_processed_ids("processed_orders.txt", processed)

Dlaczego: każde zamówienie jest uwzględniane raz, nawet jeśli uruchomisz skrypt ponownie na tym samym pliku.

Problem 2: bezpieczne odczytanie ilości

raw = (row.get("qty") or "").strip()
try:
    qty = int(float(raw))
except ValueError:
    log.warning("Zamówienie %s: błędna ilość %r, pominięto", row["order_id"], raw)
    continue

Dlaczego: pozycje zwrócone lub częściowe są pomijane z czytelną adnotacją, zamiast zatrzymywać cały import.

Problem 3: normalizacja SKU

sku = row["sku"].strip().upper()

To samo .strip().upper() zastosuj przy budowaniu słownika stanów.

Styl i czytelność

  • process() ma 90 linii; podziel ją na read_orders, apply_to_stock, write_report.
  • Zastąp "magiczne" numery kolumn (row[7]) nazwami nagłówków.

Przetestuj każdą poprawkę na kopii plików: przeczytaliśmy kod, ale go nie uruchamialiśmy.

Klient: właściciel sklepu z herbatą, który napisał 310-liniowy skrypt Python importujący zamówienia z eksportu CSV do arkusza stanów magazynowych Zgłoszony problem: "Czasem stany schodzą poniżej zera, a przy niektórych plikach skrypt się wysypuje."

Klient i wszystkie dane są wymyślone.

O usłudze

Wiele luk bezpieczeństwa widać bezpośrednio w kodzie: polecenia SQL lub powłoki budowane z danych użytkownika, wyjście wypisywane bez escapowania, hasła przechowywane z szybkim hashem, sprawdzenia, które potwierdzają, kim jest użytkownik, ale nie to, do czego ma dostęp, oraz klucze wpisane w kod źródłowy. Czytamy twój kod, używając OWASP Top 10 jako listy kontrolnej, wyjaśniamy każdy słaby punkt i to, jak można go nadużyć, oraz szeregujemy je według ryzyka. Każde ustalenie ma poprawiony fragment z bezpiecznym wzorcem dla twojego języka.

Co obejmuje usługa

  • Co otrzymujeszPisemne omówienie na stronie zamówienia: słabe punkty uszeregowane według ryzyka z wyjaśnieniem każdego oraz poprawione fragmenty z bezpiecznymi wzorcami. W pakiecie Premium także krótka lista kontrolna wzmocnienia zabezpieczeń dla reszty projektu.
  • WstrzykiwanieWstrzykiwanie SQL, poleceń powłoki i szablonów
  • Escapowanie wyjściaRyzyko cross-site scripting
  • Kontrola dostępuKto może co widzieć i zmieniać
  • Hasła i sekretyHashowanie i klucze poza kodem
  • Uszeregowane ustaleniaNajpierw napraw najgorsze

Jak to działa

  1. 1
    BriefWklejasz wrażliwe części kodu
  2. 2
    LekturaSprawdzamy kod pod kątem OWASP Top 10
  3. 3
    PrzeglądOtrzymujesz uszeregowane ustalenia i poprawki

Czego potrzebujemy od Ciebie

Kod obsługujący dane wejściowe, logowanie, pliki lub płatności wklejony jako tekst lub zrzuty ekranu z sekretami zastąpionymi symbolami zastępczymi, język i framework oraz informacja, kto korzysta z aplikacji.

Zapytamy Cię:

  • Jaki język i framework?
  • Które części obsługują dane użytkownika, logowanie lub płatności?
  • Kto korzysta z aplikacji?
  • Czy ten przegląd wywołał konkretny incydent lub ostrzeżenie?

Porównaj pakiety

PakietyPodstawowyKod do 100 linii14 €StandardKod do 400 linii32 €PremiumDo 1000 linii z listą kontrolną zabezpieczeń62 €
Termin1 dzień2 dni3 dni
Poprawki123
Linie kodudo 100do 400do 1000
Poprawione fragmentyTakTakTak
Lista kontrolna wzmocnienia zabezpieczeńNieNieTak
Zamów PodstawowyZamów StandardZamów Premium

Ochrona płatności

Płacisz przy składaniu zamówienia, ale pieniądze są przekazywane tylko za zaakceptowaną pracę.

  • Stała cenaCena pakietu nie zmienia się po zapłacie.
  • Pieniądze są zarezerwowanePrzy płatności kwota jest tylko rezerwowana. Serwis otrzymuje ją dopiero po akceptacji pracy.
  • Sprawdzone przed dostarczeniemKażdy wynik przechodzi kontrolę jakości, zanim do Ciebie trafi, a przed akceptacją widzisz go na stronie zamówienia.
  • Bezpłatne poprawkiProś o poprawki w ramach briefu tyle razy, ile przewiduje pakiet.
  • Akceptacja po 3 dniachJeśli w ciągu 3 dni od dostarczenia pracy ani jej nie zaakceptujesz, ani nie poprosisz o poprawki, zostanie zaakceptowana automatycznie. Jeśli po dostarczeniu napiszesz na czacie zamówienia, zamówienie czeka; po naszej odpowiedzi możemy ponownie uruchomić odliczanie 3 dni i poinformujemy o tym na czacie.
  • Ponowne wykonanie lub pełny zwrot pieniędzyJeśli wynik nie odpowiada Twojemu briefowi, a poprawki tego nie naprawiły, lub praca trwa ponad dwa razy dłużej niż termin, napisz na czacie zamówienia: wykonamy pracę ponownie albo zwrócimy całą płatność.
Jak to działa →

Pytania i odpowiedzi

Czy to test penetracyjny lub certyfikat bezpieczeństwa?

Nie. Czytamy przesłany kod i nie atakujemy ani nie skanujemy twojego działającego systemu, więc nie zastępuje to formalnego audytu tam, gdzie jest on wymagany.

Czy mam przesłać hasła lub klucze?

Nigdy. Zastąp je symbolami zastępczymi; jeśli prawdziwy klucz był już w kodzie, wymień go na nowy.

Czy uruchamiacie mój kod?

Nie. Uważnie go czytamy i analizujemy, jak się zachowuje, ale go nie uruchamiamy, więc przetestuj każdą proponowaną poprawkę we własnym projekcie.

Pakiety
Zamów · 32 €· 2 dni