====== DokuWiki/PHP Security Kontrolna Lista ====== **Verzija:** 2.0\\ **Opseg:** Razvoj DokuWiki dodataka i PHP-specifično sigurnosno ojačavanje. **Ova sekcija proširuje Common Checklist za razvoj DokuWiki dodataka.** ===== PHP-Specifična Sigurnost ===== ^ Provjeri ^ CWE ^ Opis ^ Rješenje ^ | [ ] XSS Prevencija | CWE-79 | Korisnički input u HTML outputu | ''hsc()'', ''htmlspecialchars()'' | | [ ] SQL Injection | CWE-89 | Upiti baze podataka | DokuWiki DB apstrakcija, Prepared Statements | | [ ] Path Traversal | CWE-22 | Manipulacija putanjama datoteka | ''cleanID()'', ''resolve_id()'' | | [ ] CSRF Zaštita | CWE-352 | Slanje formi | ''getSecurityToken()'', ''checkSecurityToken()'' | | [ ] Command Injection | CWE-78 | Shell naredbe | Izbjegavaj ''exec()'', ''shell_exec()'', ''system()'' | | [ ] Upload Datoteka | CWE-434 | Zlonamjerni upload datoteka | MIME validacija, bijela lista ekstenzija | | [ ] Open Redirect | CWE-601 | URL preusmjeravanja | Bijela lista dopuštenih domena | | [ ] Session Fixation | CWE-384 | Rukovanje sesijama | DokuWiki upravljanje sesijama | ===== DokuWiki Rukovanje Inputom ===== ^ Funkcija ^ Svrha ^ Kada Koristiti ^ | ''hsc($str)'' | HTML Escape | Sav korisnički input u HTML-u | | ''$INPUT->str('param')'' | Siguran GET/POST String | Parametri forme | | ''$INPUT->int('param')'' | Siguran Integer Input | Numerički parametri | | ''$INPUT->arr('param')'' | Siguran Array Input | Array parametri | | ''cleanID($id)'' | Sanitizacija Page ID | Reference wiki stranica | | ''resolve_id($ns, $id)'' | Razriješi relativni ID | Razrješavanje namespace-a | ===== DokuWiki Output Encoding ===== // ISPRAVNO - Uvijek escape korisnički input echo '
' . hsc($userInput) . '
'; // POGREŠNO - XSS ranjivost! echo '
' . $userInput . '
'; // ISPRAVNO - Escaping atributa echo '' . hsc($text) . ''; // ISPRAVNO - JavaScript kontekst echo '';
===== Struktura DokuWiki Dodatka ===== ^ Provjeri ^ Opis ^ | [ ] ''plugin.info.txt'' postoji | Metapodaci dodatka | | [ ] ''@license'' header u svim PHP datotekama | GPL 2 ili kompatibilno | | [ ] ''@author'' header s emailom | Atribucija | | [ ] Koristi ''$this->getLang()'' | Lokalizacija | | [ ] Koristi DokuWiki Events | Proširivost | | [ ] Nema direktnog ''$_GET''/''$_POST'' pristupa | Koristi ''$INPUT'' objekt | | [ ] Nema direktnih File Writes | Koristi DokuWiki API-je | ===== DokuWiki Security Audit Kontrolna Lista ===== ^ Provjeri ^ CWE ^ PHP Uzorak Koda za Pronalazak ^ | [ ] XSS u echo | CWE-79 | ''echo $var'' bez ''hsc()'' | | [ ] XSS u print | CWE-79 | ''print $var'' bez ''hsc()'' | | [ ] Direktni $_GET | CWE-20 | ''$_GET['param']'' | | [ ] Direktni $_POST | CWE-20 | ''$_POST['param']'' | | [ ] Direktni $_REQUEST | CWE-20 | ''$_REQUEST['param']'' | | [ ] SQL concat | CWE-89 | ''"SELECT * FROM " . $var'' | | [ ] Shell exec | CWE-78 | ''exec()'', ''shell_exec()'', ''system()'', navodnici | | [ ] File include | CWE-98 | ''include($var)'', ''require($var)'' | | [ ] Nevalidirano preusmjeravanje | CWE-601 | ''header("Location: " . $var)'' | | [ ] Eval | CWE-94 | ''eval($var)'' | | [ ] Preg s e modifikatorom | CWE-94 | ''preg_replace('/...$/e', ...)'' (deprecated) | ===== DokuWiki Sigurnosne Funkcije Reference ===== ^ Funkcija ^ Svrha ^ CWE Spriječen ^ | ''hsc()'' | HTML Special Chars | CWE-79 (XSS) | | ''cleanID()'' | Očisti Page ID | CWE-22 (Path Traversal) | | ''resolve_id()'' | Razriješi Page ID | CWE-22 (Path Traversal) | | ''getSecurityToken()'' | Dohvati CSRF Token | CWE-352 (CSRF) | | ''checkSecurityToken()'' | Verificiraj CSRF Token | CWE-352 (CSRF) | | ''auth_quickaclcheck()'' | Provjeri dozvole | CWE-862 (Missing Auth) | | ''$INPUT->str()'' | Siguran String Input | CWE-20 (Input Validation) | | ''$INPUT->int()'' | Siguran Integer Input | CWE-20 (Input Validation) | ---- plugin.info.txt postoji @license header u svim PHP datotekama @author header s emailom Nema direktnog $_GET/$_POST pristupa XSS Prevention (hsc() korišten) ---- //Verzija: 2.0 (Split)//\\ //Autor: Wolfgang van der Stille// Natrag na [[.:start|Stack Kontrolne Liste]] | [[..:start|Kontrolne Liste za Pregled]] ~~DISCUSSION:off~~