mysql — использование eval (); выполнить php прямо из базы данных

Я делаю веб-сайт, где я храню все свои HTML-страницы в mysqli database, и я пришел к этой проблеме, где я не мог выполнить свой код PHP с помощью echo, Так что я нашел это решение, где мне пришлось использовать eval(); чтобы мой PHP-код работал, я слышал, что это может быть очень опасно, если вы не подтвердите его правильно.

$firstname =  htmlspecialchars($mysqli->real_escape_string($row['firstname']));

Пока это то, как я проверял это, будет ли это достаточно безопасно?

Замечания: эта строка кода используется, когда я запрашиваю информацию из базы данных для отображения на странице.

Извините, если я не объяснил себя достаточно хорошо, я все еще новичок в этом. 🙂

Вот как я получаю свои страницы из базы данных.

<?php
if (isset($_GET["page"]) && $_GET["page"] != null) {
$query = "SELECT * FROM pages WHERE pagename = '$_GET[page]'";
$result = $mysqli->query($query);

while ($row = $result->fetch_array(MYSQLI_ASSOC)){
$pagetitle = $row["pagetitle"];
$pagename = $row["pagename"];
$pagecontent = $row["pagecontent"];
}
} else {
$query = "SELECT * FROM pages WHERE pagename = 'index.php'";
$result = $mysqli->query($query);

while ($row = $result->fetch_array(MYSQLI_ASSOC)){
$pagetitle = $row["pagetitle"];
$pagename = $row["pagename"];
$pagecontent = $row["pagecontent"];
}
}
?>

0

Решение

Я просто хотел бы сказать, что вы делаете здесь две вещи, которые обычно считаются плохой практикой.

  1. Хранение кода, который будет выполняться в базе данных. (Всегда храните код в текстовых файлах, таким образом они контролируются версиями и также менее уязвимы для SQL-атак).
  2. Использование eval ().

И то, и другое — плохие идеи, и в какой-то момент они почти наверняка укусят вас в задницу.

Что вы пытаетесь сделать?

1

Другие решения

real_escape_string просто удаляет любые символы, которые могут быть использованы для внедрения SQL. Если вы выполняете ввод данных пользователем в виде PHP-кода, вы предоставляете своим пользователям те же возможности, что и в ваших PHP-скриптах. В том числе запуск системных команд для удаления всех файлов с вашего сервера, например.

Вы не хотите этим заниматься. Этот конкретный случай, о котором вы говорите, вы можете уточнить? Вероятно, есть лучшее решение вашей проблемы.

2

По вопросам рекламы [email protected]