Ş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.
Hatalı
Bölüm başlığı “Hatalı”<?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']]);Düzeltme
Bölüm başlığı “Düzeltme”Şablon metnini sabit tutun ve kullanıcı verisini ifade olarak değil, render değişkeni olarak geçirin.