я хотел бы знать, есть ли возможная инъекция кода (или любая другая угроза безопасности, такая как чтение блоков памяти, которые вы не должны были делать и т. д.) в следующем сценарии, где несанированные данные из HTTP GET используется в коде PHP как КЛЮЧ массива.
Это должно было преобразовать буквы в их порядок в алфавите. a до 1, b до 2, c до 3.... Переменная HTTP GET "letter" должна иметь значения букв, но, как вы понимаете, на сервер можно отправить что угодно:
HTML:
http://www.example.com/index.php?letter=[anything in here, as dirty it can gets]
PHP:
$dirty_data = $_GET['letter'];
echo "Your letter's order in alphabet is:".Letter2Number($dirty_data);
function Letter2Number($my_array_key)
{
$alphabet = array("a" => "1", "b" => "2", "c" => "3");
// And now we will eventually use HTTP GET unsanitized data
// as a KEY for a PHP array... Yikes!
return $alphabet[$my_array_key];
}
Вопросы:
- Видите ли вы какие-либо угрозы безопасности?
- Как я могу дезинфицировать данные HTTP, чтобы иметь возможность использовать их в коде как KEY массива?
- Насколько плоха эта практика?
NULL
, что теоретически может быть угрозой безопасности в другом месте кода, если вы не проверите его. - person someone   schedule 08.09.2011