PHP嵌套菜单安全性问题

来自新手:

在试图显示修改后的嵌套菜单How to create a nested menu from MySQL with 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>";

?>

解决方法:

如果数据库表中的值以前是用户输入的,请确保在输出它们之前使用htmlentities()对其进行转义.例如,替换以下行:

$tags = $row['parent_name'];

有了这个:

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

使用htmlentities()可以防止称为cross-site scripting的漏洞,这是我在这种情况下可以看到的唯一安全问题.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...