Jump to content

Veškerá aktivita

Tento obsah se sám aktualizuje

  1. Last week
  2. Tak by třeba bylo řešením, aby se někdo ještě vložil do řetězce a zprostředkovával to. Pak by to hostovala čtvrtá strana a bylo by to OK
  3. Earlier
  4. Kvůli GDPR to nesmí hostovat třetí strana bez smlouvy, a to je i na mě moc velký hassle :D
  5. Jo klidně :-) Není problém, chtěl jsem to navrhnout majitelovi že rád zahostuji nostalgii a vzpomínky z dětství :-D EDIT: Aspoň by tu třeba nemuselo být plno reklam :-D
  6. Třeba samotné Pawno.cz co? :D Třeba by fungovalo častěji :D
  7. No vidíš, reklamu už jsi si tu udělal, tak můžeš začít hostovat něco pro Pawno.cz :D :D
  8. Kdyby někdo chtěl - rád zasponzoruji jakýkoliv projekt - herní / jiný. Klidně VPS, game hosting, webhosting atd výměnou za reklamu... Napište na https://discord.gg/xVFJFFz33e do PM -> DragoCZ.. :-)
  9. Tak proběhla ještě jedna migrace :D k tomu všemu jsem ještě dal pawno pod svou monitoring službu, tak případné pády zachytím co nejdříve
  10. Můžeš být rád, že to nebyl návod na to, jak otevřít dveře. Ani po sedmi letech by ses nedočkal návodu, jak ty dveře zavřít :D
  11. Kedy bude pokracovanie? Uz by som sa chcel konecne naucit programovat v HTML nech si mozem naprogramovat vlastny herny engine.
  12. Článek jsem rychle zkontroloval a myslím si, že je vše v pořádku - kód jsem však netestoval +1 tomu kdo najde případné chyby
  13. PHP pro začátečníky: Vytvoření bezpečného kontaktního formuláře s validací a CSRF základy Tento článek ukazuje, jak postavit jednoduchý PHP backend pro zpracování kontaktního formuláře s důrazem na serverovou validaci, sanitaci vstupů a základní bezpečnostní praktiky (včetně ochrany CSRF a bezpečného odesílání e-mailů). Je určen jak pro začátečníky, tak pro profesionály, kteří chtějí své základy upevnit a ověřit správné postupy na praktické ukázce. Bezpečné zpracování vstupů na straně serveru Jako první pravidlo platí: nikdy neuspěcháme se zpracováním dat jen na straně klienta. Formulář může být upraven, hacknut, nebo zneužit. Zpracování vstupů by mělo probíhat na serveru, kde lze důkladně ověřit i ošetřit data před dalším použitím (odesláním e-mailu, uložením do databáze apod.). Základní kroky zahrnují validaci, sanitaci a bezpečné nakládání s výstupy. Ochrana CSRF a validace vstupů CSRF (Cross-Site Request Forgery) je útok, při kterém útočník podešle nekalý požadavek za vás. Abychom tomu zabránili, vygenerujeme náhodný token a vložíme ho do formuláře. Při zpracování požadavku pak token ověříme. Společně s CSRF tokenem provádíme také validaci a sanitaci vstupů (jméno, e-mail, zpráva). <?php // Základní nastavení CSRF tokenu session_start(); if (empty($_SESSION['csrf_token'])) { // Bezpečný náhodný token $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); } // Shromáždění chyb $errors = []; if ($_SERVER['REQUEST_METHOD'] === 'POST') { // Ověření CSRF tokenu $postedToken = $_POST['csrf_token'] ?? ''; if (!isset($_SESSION['csrf_token']) || !hash_equals($_SESSION['csrf_token'], $postedToken)) { $errors[] = 'Neplatný CSRF token.'; } // Získání a sanitace vstupů $name = trim($_POST['name'] ?? ''); $email = trim($_POST['email'] ?? ''); $message = trim($_POST['message'] ?? ''); // Validace if ($name === '') { $errors[] = 'Zadejte jméno.'; } if ($email === '' || !filter_var($email, FILTER_VALIDATE_EMAIL)) { $errors[] = 'Zadejte platný e-mail.'; } if ($message === '' || mb_strlen($message) < 10) { $errors[] = 'Zpráva musí obsahovat alespoň 10 znaků.'; } // Sanitace pro výstup do e-mailu / okna $name = htmlspecialchars($name, ENT_QUOTES, 'UTF-8'); $email = filter_var($email, FILTER_SANITIZE_EMAIL); $message = htmlspecialchars($message, ENT_QUOTES, 'UTF-8'); if (empty($errors)) { // Bezpečné odesílání e-mailu $to = '[email protected]'; $subject = 'Nová zpráva z kontaktního formuláře'; $body = "Jméno: $name\nEmail: $email\n\nZpráva:\n$message"; // Důležité: From by měl být doménový email odpovídající serveru $headers = "From: Pawno.cz \r\n"; $headers .= "Reply-To: $email\r\n"; $headers .= "Content-Type: text/plain; charset=UTF-8"; if (mail($to, $subject, $body, $headers)) { echo 'Zpráva byla odeslána. Děkujeme!'; // Rotace CSRF tokenu po úspěšném odeslání $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); } else { $errors[] = 'Nepodařilo se odeslat zprávu. Zkuste to prosím později.'; } } } ?> Další poznámka: i když je PHP mail() funkce jednoduchá, v produkčním prostředí se často doporučuje používat knihovny jako PHPMailer nebo SwiftMailer. Ty poskytují lepší správu odchozích emailů, bezpečnostní hlavičky a lepší viditelnost nad chybami odeslání. Praktické ukázky kódu Následují dva jednoduché příklady, které ilustrují principy zpracování formuláře a CSRF tokenů. HTML formulář s CSRF tokenem <form action="process_contact.php" method="post"> <label for="name">Jméno</label> <input type="text" id="name" name="name" required /> <label for="email">Email</label> <input type="email" id="email" name="email" required /> <label for="message">Zpráva</label> <textarea id="message" name="message" required></textarea> <input type="hidden" name="csrf_token" value="<?php echo htmlspecialchars($_SESSION['csrf_token'], ENT_QUOTES, 'UTF-8'); ?>" /> <button type="submit">Odeslat</button> </form> PHP zpracování formuláře (zkrácená ukázka) <?php session_start(); // CSRF token initialization (opět, pokud není) if (empty($_SESSION['csrf_token'])) { $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); } // Předpokládaná zpracovávaná data z POST $name = trim($_POST['name'] ?? ''); $email = trim($_POST['email'] ?? ''); $message = trim($_POST['message'] ?? ''); $postedToken = $_POST['csrf_token'] ?? ''; // CSRF validace $errors = []; if (!isset($_SESSION['csrf_token']) || !hash_equals($_SESSION['csrf_token'], $postedToken)) { $errors[] = 'Neplatný CSRF token.'; } // Validace vstupů if ($name === '') $errors[] = 'Zadejte jméno.'; if ($email === '' || !filter_var($email, FILTER_VALIDATE_EMAIL)) $errors[] = 'Zadejte platný email.'; if ($message === '' || mb_strlen($message) < 10) $errors[] = 'Zpráva musí mít alespoň 10 znaků.'; if (empty($errors)) { // Sanitace pro výstup $name = htmlspecialchars($name, ENT_QUOTES, 'UTF-8'); $email = filter_var($email, FILTER_SANITIZE_EMAIL); $message = htmlspecialchars($message, ENT_QUOTES, 'UTF-8'); $to = '[email protected]'; $subject = 'Nová zpráva z kontaktního formuláře'; $body = "Jméno: $name\nEmail: $email\n\nZpráva:\n$message"; $headers = "From: Pawno.cz \r\n"; $headers .= "Reply-To: $email\r\n"; $headers .= "Content-Type: text/plain; charset=UTF-8"; if (mail($to, $subject, $body, $headers)) { echo 'Zpráva byla odeslána.'; $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); } else { $errors[] = 'Chyba při odesílání; zkuste to prosím později.'; } } ?> Tip pro začátečníky: vkládejte CSRF tokeny jen do skrytých polí formuláře a na straně serveru vždy ověřujte tokeny. Důležité je také minimálně sanitizovat vstupy a neukládat nebo nevracet nepřesně zpracované data přímo do HTML bez escapingu. Pokud řešíte složitější e-mailové šablony nebo odesílání na více adres, zvažte použití knihovny jako PHPMailer. Máte vlastní zkušenosti s bezpečným zpracováním formulářů v PHP? Podělte se o tipy, otázky nebo své zkušenosti v komentářích níže a zapojte se do diskuze s komunitou Pawno.cz!
  14. Nefunguje mi ACP -> Groups a mimo jine hromada dalsich veci v ACP
  15. Možná jste si všimli, že Pawno pár dní nefungovalo - zmršili jsme trochu migraci :D @Ewwe mi oznámil, že je potřeba přesunout pawno na nový server, já měl za úkol přehodit DNS záznamy na novou IP. Zmršil jsem to, protože Pawno jede přes cloudflare a já měnil DNS záznamy u registrátora.. No nic - další zádrhel bylo SSL a nyní nakonec ještě verze PHP Tento post je vlastně test, zda funguje to hlavní co tu fungovat ještě má - a to zdá se funguje - takže jedeme dál A děkuji @Ewwe že nás stále drží online
  16. Ahoj, sháním pawnera pro předělání gamemodu který je již dostupný na internetu (samozřejmé zašlu), jedná se o CWTG Gamemode. Veškeré informace zašlu taktéž. Taktéž jistá je finanční odměna. Kontaktuje mě na discord: cavomohi
  17. Joo, pěkný časy. Btw._Daffy_ je tu ještě taky někde? 😅
  18. Aha, v tom případě si na XEL a CRAZYHOST pamatuji. Sice matně ale pamatuji. Cool
  19. Vďaka za feedback hoši. Max MB som upravil z 150 MB na 50 MB. Obmedzovať zatiaľ nebudem nič, uvidí sa časom ako to ľudia budú využívať (lepšie napísané zneužívať :D ) a potom prípadne podniknem nejaké kroky.
  20. dd if=/dev/zero of=foobar.jpg bs=1M count=100
  21. Doporučuji stáhnout max file size na 50 MB a omezit počet obrázků od jednoho návštěvníka :D
  22. Ked tvrdis ze to je do 150MB/obrazok tak predpokladam, ze to ma fungovat do 150MB
  23. Tak ono to predovšetkým slúži na nahrávanie "normálnych" obrázkov (napr. do 5 MB). Nemá to slúžiť ako miesto kde napr. nahráš obrázok z dovolenky v 8K rozlíšení :D . Je to skôr na také zdieľanie chybových hlášok (či z Windowsu, hier atď...) čiže skôr na také "bežné/normálne" obrázky. Nie 4K/8K. A ak neodpovedá (v tom slova-zmysle že sa stránka stále načítava) tak treba čakať. Ono sa to nahrá :D .
  24. normalne som tam isiel uploadnut 100MB jpeg a server neodpoveda :D
  1. Load more activity
×
×
  • Create New...