====== 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~~