Kontrolní seznam zabezpečení pro vývojáře
Tento dokument je poskytován jako doplněk k Bezpečnost pro vývojáře . Toto je seznam běžných vývojových úkolů a bezpečnostních opatření, která je třeba přijmout.
Bezpečnostní kontrolní seznam
Pokud pracujete s... | získáte ... |
---|---|
Soubory cookie prohlížeče |
# Pokuste se načíst hodnotu souboru cookie UserID.
# Poznámka: Vrácená hodnota není důvěryhodná a je nucena být int.
$sId = intval( $wgRequest->getCookie( 'UserID' ) );
|
Dynamické generování kódu |
Nepoužívejte funkce jako
Někdy tyto funkce opravdu potřebujete (samozřejmě Inline funkce lambda usnadní vložení zpětného volání a zároveň si zachovají výhody kódu, který je napsán v nativní syntaxi namísto řetězců.
$str = preg_replace( "!" . preg_quote( $externalStr, '!' ) . "!", $replacement, $str );
|
Externí programy |
// Automaticky uniknout všem nevhodným znakům
$result = Shell::command( $cmd, '--version' )
->params( 'some', 'extra', 'parameters' )
->execute();
Všimněte si, že staré |
Formuláře |
|
Data GET |
# Zkontrolujte, zda je parametr akce nastaven na 'purge'
if ( $wgRequest->getVal( 'action' ) == 'purge' ) {
...
|
Výstup (API, CSS, JavaScript, HTML, XML atd.)Jakýkoli obsah, který MediaWiki generuje, může být vektorem pro XSS útoky. |
# rawElement() escapuje všechny hodnoty atributů
# (což v tomto případě poskytuje $myClass)
echo Html::rawElement( 'p', [ 'class' => $myClass ] );
|
CSS poskytnuté uživatelemCSS poskytnuté uživatelem (řekněme pro použití v atributu |
# nechť $CSSFromUser je CSS uživatele.
echo Html::rawElement( 'p', [ 'style' => Sanitizer::checkCss( $CSSFromUser ) ] );
|
Data POST |
# Zkontrolujte, zda je parametr akce nastaven na 'render'
if ( $wgRequest->getVal( 'action' ) == 'render' ) {
...
|
Řetězce dotazů |
|
Relace |
|
Obavy recenzenta |
# $wgRequest zatím není k dispozici. Místo toho je vynuceno použití $_GET.
if ( $_GET['setupTestSuite'] !== null ) {
$setupTestSuiteName = $_GET['setupTestSuite'];
...
|
Dotazy SQL |
|
Automatická kontrola
Některé z těchto problémů lze zkontrolovat pomocí phan-taint-check-plugin, který je vyžadován pro veškerý kód MediaWiki v produkci Wikimedie. Toto je samozřejmě pouze nástroj, který nedokáže detekovat všechny typy problémů a může přehlédnout problémy i u typů problémů, které dokáže zkontrolovat.
Související odkazy