İçeriğe geç

Şablon enjeksiyonu (ARCH7130)

Anahtar php.security.template-injection · Önem error · Kategori security · CWE CWE-1336

Şablon dizesinin kendisini kullanıcı girdisinden oluşturmak, motorun saldırgan denetimli ifadeleri değerlendirmesine ve uzaktan kod çalıştırmaya (SSTI) yol açar. Kullanıcı verisi yalnızca şablon değişkeni olarak geçirilmelidir.

<?php
$loader = new \Twig\Loader\ArrayLoader([
'page' => 'Merhaba ' . $_GET['name'],
]);
$twig = new \Twig\Environment($loader);
echo $twig->render('page');
<?php
$loader = new \Twig\Loader\ArrayLoader([
'page' => 'Merhaba {{ name }}',
]);
$twig = new \Twig\Environment($loader);
echo $twig->render('page', ['name' => $_GET['name']]);

Şablon metnini sabit tutun ve kullanıcı verisini ifade olarak değil, render değişkeni olarak geçirin.