Inhaltsverzeichnis
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 '<div>' . hsc($userInput) . '</div>'; // POGREŠNO - XSS ranjivost! echo '<div>' . $userInput . '</div>'; // ISPRAVNO - Escaping atributa echo '<a href="' . hsc($url) . '">' . hsc($text) . '</a>'; // ISPRAVNO - JavaScript kontekst echo '<script>var data = ' . json_encode($data, JSON_HEX_TAG) . ';</script>';
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) |
<wvds:audit:template> plugin.info.txt postoji @license header u svim PHP datotekama @author header s emailom Nema direktnog $_GET/$_POST pristupa XSS Prevention (hsc() korišten) </wvds:audit:template>
Verzija: 2.0 (Split)
Autor: Wolfgang van der Stille
Natrag na Stack Kontrolne Liste | Kontrolne Liste za Pregled
Zuletzt geändert: 29.01.2026. u 20:56