BetaalbeschermingDetails
- Revisies binnen het pakket zijn gratis.
- Reageer je niet binnen 3 dagen na levering, dan wordt het werk automatisch goedgekeurd.
Het geld wordt bij betaling gereserveerd en pas vrijgegeven als je het werk goedkeurt.

Voorbeeldresultaat
Code review: Python order-import script for a small online shop
What the code does
- Reads
orders.csvfrom the shop export. - For each order line, finds the product by SKU in
stock.xlsxand subtracts the quantity. - Writes the updated stock back and logs totals to
import_log.txt.
The structure is clear and functions are well named. Most issues are about input that does not look the way the script expects.
Bugs and weak spots
| # | Line | Severity | Issue |
|---|---|---|---|
| 1 | 48 | High | The same CSV can be imported twice; there is no check for already processed order IDs. This is the most likely cause of negative stock. |
| 2 | 72 | High | int(row["qty"]) crashes on empty or "2.0" values from refunded orders. |
| 3 | 95 | Medium | SKU lookup is case-sensitive: "gt-101" and "GT-101" are treated as different products. |
| 4 | 130 | Medium | The file is opened without encoding="utf-8", so product names with accents break on Windows. |
| 5 | 201 | Low | Bare except: hides real errors and makes the log useless. |
Corrected fragments
Issue 1: skip orders already imported
processed = load_processed_ids("processed_orders.txt")
for row in reader:
if row["order_id"] in processed:
continue
# ... existing logic ...
processed.add(row["order_id"])
save_processed_ids("processed_orders.txt", processed)
Why: each order is applied once, even if you run the script on the same file again.
Issue 2: read quantity safely
raw = (row.get("qty") or "").strip()
try:
qty = int(float(raw))
except ValueError:
log.warning("Order %s: bad quantity %r, skipped", row["order_id"], raw)
continue
Why: refunded or partial lines are skipped with a clear note instead of stopping the whole import.
Issue 3: normalise SKUs
sku = row["sku"].strip().upper()
Apply the same .strip().upper() when building the stock dictionary.
Style and readability
process()is 90 lines long; split it intoread_orders,apply_to_stock,write_report.- Replace magic column numbers (
row[7]) with header names.
Please test each fix on a copy of your files: we read the code but did not run it.
Client: owner of a tea shop who wrote a 310-line Python script that imports orders from a CSV export into the stock spreadsheet Problem reported: "Sometimes stock goes negative, and the script crashes on some files."
De klant en alle details zijn verzonnen.
Over deze dienst
Veel beveiligingslekken zijn direct in de code te zien: SQL- of shellcommando's die uit gebruikersinvoer worden opgebouwd, uitvoer die zonder escapen wordt afgedrukt, wachtwoorden die met een snelle hash zijn opgeslagen, controles die bevestigen wie de gebruiker is maar niet waartoe hij toegang heeft, en sleutels die in de broncode staan. Wij lezen je code met de OWASP Top 10 als checklist, leggen elke zwakke plek uit en hoe die kan worden misbruikt, en rangschikken ze op risico. Bij elke bevinding hoort een gecorrigeerd fragment met het veilige patroon voor jouw taal.
Wat is inbegrepen
- Wat je krijgtEen schriftelijke review op de bestelpagina: zwakke plekken gerangschikt op risico met uitleg bij elk, en gecorrigeerde fragmenten met veilige patronen. Premium voegt een korte checklist voor versterking van de rest van het project toe.
- InjectieSQL-, shell- en templateinjectie
- Uitvoer escapenRisico's van cross-site scripting
- ToegangscontrolesWie wat mag zien en wijzigen
- Wachtwoorden en geheimenHashing en sleutels buiten de code
- Gerangschikte bevindingenLos eerst het ergste op
Hoe het werkt
- 1BriefingJe plakt de gevoelige delen van de code
- 2LezenWij toetsen het aan de OWASP Top 10
- 3ReviewJe ontvangt gerangschikte bevindingen en oplossingen
Wat we van je nodig hebben
De code die invoer, logins, bestanden of betalingen afhandelt, als geplakte tekst of screenshots met geheimen vervangen door plaatshouders, de taal en het framework, en wie de app gebruikt.
We vragen je:
- Welke taal en welk framework?
- Welke delen verwerken gebruikersinvoer, logins of betalingen?
- Wie gebruikt de app?
- Is deze review aangevraagd na een specifiek incident of een waarschuwing?
Pakketten vergelijken
| Pakketten | BasisCode tot 100 regels€ 14 | StandaardCode tot 400 regels€ 32 | PremiumTot 1.000 regels met een checklist voor versterking€ 62 |
|---|---|---|---|
| Levertijd | 1 dag | 2 dagen | 3 dagen |
| Revisies | 1 | 2 | 3 |
| Regels code | tot 100 | tot 400 | tot 1.000 |
| Gecorrigeerde fragmenten | Ja | Ja | Ja |
| Checklist voor versterking | Nee | Nee | Ja |
| Bestellen Basis | Bestellen Standaard | Bestellen Premium |
Betaalbescherming
Je betaalt bij het bestellen, maar het geld wordt alleen vrijgegeven voor goedgekeurd werk.
- Vaste prijsDe prijs van het pakket verandert niet meer nadat je hebt betaald.
- Het geld wordt gereserveerdBij betaling wordt het bedrag alleen gereserveerd. Het gaat pas naar de dienst als je het werk goedkeurt.
- Gecontroleerd vóór leveringElk resultaat doorloopt een kwaliteitscontrole voordat het bij jou komt, en je ziet het op de bestelpagina voordat je het goedkeurt.
- Gratis revisiesVraag wijzigingen binnen je briefing aan, zo vaak als het pakket toestaat.
- Goedkeuring na 3 dagenKeur je het werk binnen 3 dagen na levering niet goed en vraag je ook geen wijzigingen, dan wordt het automatisch goedgekeurd. Schrijf je na levering in de chat van de bestelling, dan wacht de bestelling; zodra we hebben geantwoord, kunnen we de 3 dagen opnieuw laten ingaan en melden we dat in de chat.
- Opnieuw doen of volledige terugbetalingPast het resultaat niet bij je briefing en hebben de revisies dat niet opgelost, of duurt het werk meer dan twee keer zo lang als de levertijd, schrijf dan in de chat van de bestelling: we doen het werk opnieuw of betalen het volledige bedrag terug.
Vragen en antwoorden
Is dit een penetratietest of een beveiligingscertificaat?
Nee. Wij lezen de code die je stuurt en vallen je live systeem niet aan en scannen het niet, dus dit vervangt geen formele audit als die vereist is.
Moet ik wachtwoorden of sleutels meesturen?
Nooit. Vervang ze door plaatshouders; als er al een echte sleutel in de code stond, vervang die dan door een nieuwe.
Voeren jullie mijn code uit?
Nee. Wij lezen hem zorgvuldig en redeneren over hoe hij zich gedraagt, maar voeren hem niet uit, dus test elke voorgestelde oplossing in je eigen project.
Staat je antwoord er niet bij?