PHP вложенный вопрос безопасности меню - PullRequest
3 голосов
/ 04 июля 2011

от новичка:

Чтобы отобразить измененное вложенное меню Как создать вложенное меню из MySQL с помощью PHP? . У меня вопрос: есть ли проблемы с безопасностью при таком подходе? С моей точки зрения новичка этот код на стороне сервера, за исключением запуска запроса при загрузке страницы.

Все идеи и предложения приветствуются. Спасибо.

<?php
include '../data.php'; // connection folder  

$query = "SELECT `parent_name`, `parent_id`, `child_name`, child_id
            FROM  `pages.child` INNER JOIN `pages.parent`
            ORDER BY `parent_name`";

$result = mysql_query($query) or die(mysql_error());
echo "<ul id=\"catmenu\">";
$last_parent = '';
while($row = mysql_fetch_array($result)){
    if($last_parent != $row['parent_name']){
            // Unless this is the first item, close the last category
            if($last_parent != ''){
                    echo "</ul></li>";
            }
            // Parent menu begins <li> and <ul>
            $last_parent = $row['parent_name'];
            $tags = $row['parent_name'];               
            echo "<a href=\"$tags\"><li class=\"menulist\">{$tags}<ul></a>";
    }
    if($row['parent_id'] === $row['child_id'] ){
        $tags = $row['parent_name'];
        $tag = $row['child_name'];
        echo "<li class=\"menulist\"><a href=\"$tags\\$tag\">$tag</a>";
        }        
}
if($last_parent != ''){
    echo "</ul></li>";
}
echo "</ul>";

?>

1 Ответ

3 голосов
/ 04 июля 2011

Если значения в таблице базы данных были ранее введены пользователями, убедитесь, что вы экранировали их, используя htmlentities() перед их выводом. Например, заменить строку:

$tags = $row['parent_name'];

С этим:

$tags = htmlentities($row['parent_name']);

Использование htmlentities() предотвращает уязвимость, известную как межсайтовый скриптинг , которая является единственной проблемой безопасности, которую я вижу в этой ситуации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...