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